IMPORTANT: you REALLY want to run the integration tests against a live Solr instance with indexed data. See the section at the end of this document about integration tests and naming etc.
Find a suitable name for the new version and branch - an example site is the
Release name generator
which somehow (sort-of) relates to the release. The next release may very
well be called bitter-shadow
as there may be some boost terms added to
queries.
Other possible version names:
raspy-pine
twilight-truth
quiet-paper
lucky-wave
young-pine
Create a branch from the main
branch with the above name i.e. bitter-shadow
.
Do the work, run the tests, but don't forget the following:
See the file src/main/resources/gradle.properties
and update the following
properties:
The Synapticloop Panl project uses major.minor.micro
versioning, the meaning
of which:
major
- the major version will increment when there is a breaking change to the Panl LPSE URL. Upon increment of the major version, both the minor and micro version number will be reset to 0 (zero).minor
- the minor version will increment when there is additional functionality added to the release. Upon increment of the minor version, the micro number will be reset to 0 (zero).micro
- the micro version will increment for bug fixes only.
The book version matches the version of the Synapticloop Project version. Any
changes to the book without any changes to the codebase will be updated on
the main
branch and the ghpages
based website will be updated.
The Panl releases will not reflect any book updates.
NOTE: you must have the Solr server with all data indexed running
This includes both the unit tests ./gradlew test
and the integration tests
./gradlew testIntegration
The integration tests are the best tests to run as they will ensure that specific facets will be able to be removed and added, inverted etc.
NOTE: you must have the Solr server with all data indexed running
This will take a bit of time as it tests a lot of live URLs
./gradlew testIntegrationSpider
This may take quite some time....
The following parts need to be updated:
- The table of branch release status
- remove old branches (leave
MAIN
,SOLR PANL 9
,SOLR PANL 8
,SOLR PANL 7
) - add new branch
hidden-summer
and get the circle-ci badges for the build
- remove old branches (leave
- Ensure that the Section "Why Synapticloop Panl?" is up-to-date
- Ensure that the Section "Additional Panl Niceties" is up-to-date
- Update the In-built Panl web app images (see
src/main/docs
for images) and the descriptions - Add in the section for Version History with all details - use previous versions as a template
Update this as you go along.
Create a copy of the file with the previous version number - this is an archive.
Ensure that you run both unit and integration tests for all branches. You will need to spin up the latest version for each of the Solr release versions (and possibly reindex the data).
Merge all changes to the main version, there should be no conflicts.... but resolve them.
- checkout
main
- merge the branch
hidden-summer
on to themain
branch - test
- commit
- push
There should be no conflicts as the main
branch is linked to Solr version 9,
this will change when Solr releases their version 10.
- checkout
solr-panl-9
- merge the branch
main
on to thesolr-panl-9
branch - there should be no conflicts as the main branch and the Solr version are the same - test
- commit
- push
There MOST PROBABLY WILL BE conflicts if any of the individual files that deal with the integration points have changed.
- checkout
solr-panl-8
- merge the branch
main
on to thesolr-panl-8
branch - test
- commit
- push
The files most likely to conflict are:
build.gradle
(especially around dependencies)- Anything in the
com.synapticloop.panl.server.client
package - Maybe some tests...
There MOST PROBABLY WILL BE conflicts if any of the individual files that deal with the integration points have changed.
- checkout
solr-panl-7
- merge the branch
main
on to thesolr-panl-7
branch
The files most likely to conflict are:
build.gradle
(especially around dependencies)- Anything in the
com.synapticloop.panl.server.client
package - Maybe some tests...
Create a new release which matches the src/main/resources/gradle.properties
file with the panl.version
number.
This is done through the github releases page: Github Releases.
This will also tag the release
The notes should be the same as those as are in the README.md
file.
Upload the .zip
and .tar
files
Upload pdf of the book
Release
Remember
- Page 1 - update the Version
- Update the
Additional Functionality in the Pipeline
(page 320 ish) - Update the table of contents (including changing the font of the table of contents to Libre Baskerville)
The book can be found Getting Started With Panl although access must be granted to individuals wishing to edit the documentation (Google Drive based document).
- Save the book as
Web-page/html
- Checkout the
ghpages
branch - Save the HTML file into the
src/docs
directory (Overwrite the file) - Save all images into the
book/images
directory (Overwrite any that exist) - Run the
src/main/java/com/synapticloop/debookeriser/Main.java
file - Commit the files
- Push the files
The source code lives in src/testintegration/java/
All Facets and Facet type options should be tested in conjunction with all other facet types and options.
The Facet Types
- REGULAR - keyed on
testRegular
- REGULAR MultiValued - keyed on
testMulti
- BOOLEAN - keyed on
testBoolean
- RANGE - keyed on
testRange
- DATE Range - keyed on
testDate
- OR - keyed on
testOr
- OR Separator - keyed on
testOrSep
Depending on which way you want to look at things, a test for a RANGE facet with
a Regular Multi facet may be in the RangeTest
, or the MultiTest
class
Don't forget to test sorting (include multi sort) and query operands
All tests should have the following test method signature
All Tests should extend the abstract TestBase, which defines the following mandatory methods:
@Test public void testDefault() throws Exception;
- test the default
add/remove/invert etc.
@Test public abstract void testSortDefault() throws Exception;
- test one
sorting level
@Test public abstract void testSortHierarchy() throws Exception;
- test two
sorting levels
see the class com.synapticloop.integration.test.facet.TestBase
for the full
list
Everything should be smooth... :)
It MUST be named solr-panl-<major_version_number>
(i.e. solr-panl-10
)
In the src/main/resources/gradle.properties
update the property
panl.solr.version
to the new Solr version
In the build.gradle
file update the dependencies for:
// solrj
implementation 'org.apache.solr:solr-solrj:9.8.0'
implementation 'org.apache.solr:solr-solrj-zookeeper:9.8.0'
// HTTP server
implementation 'org.eclipse.jetty.http2:http2-server:10.0.22'
implementation 'org.eclipse.jetty:jetty-servlet:10.0.22'
Especially the jetty server to be in line with the version that SolrJ requires. (although because this serves up the Panl api, there really isn't a need to update this - may as well to ensure compatability with SolrJ)
There MAY be new SolrJ connectors (or ones that have dropped off)
~ ~ ~ * ~ ~ ~
Panl will NOT officially support versions before Solr version 7 (it was released in 2019 - that should be enough time...)
~ ~ ~ * ~ ~ ~