Pipeline stage to test that AM's FBC (file-based config) can be upgraded (and then used with AM successfully) after every commit. This stage will fail if required openam-config-upgrader rules are missing from fbc/master.groovy.
Deployments of (file-based) AM require an upgrade mechanism. The openam-config-upgrader (released within the AM.zip) can upgrade the FBC configuration files. To ensure that the upgrader rules are kept up to date the fbc-config-upgrader-tests stage has been added to the postCommit pipeline. The premise is that a known baseline FBC can be upgraded, using the tool and rules, and then used to successfully start up the latest version of AM. The rules should be idempotent; so running multiple times will produce the same end result.
Test failure is an indication to the code committer that a new file based configuration upgrade rule is required on master. (There is a dependency on completion of - AME-18785Getting issue details... STATUS )
Slides for the DoD can be found here https://docs.google.com/presentation/d/19MMpHbkOKKWNqcYMzJdmeI8C3dMgPu3FYZ-8iUDMCCY/edit#slide=id.p
The test has its own deployer UpgradedFBCAmDeployer which can be called by the Tests' CLI. The AM-7.0.0 baseline configuration is in the OpenAM git repository along with scripts to generate a new configuration if/when required. At the time of writing there is one upgrade rule to set the configuration version.
- Start with a known set of configuration at a fixed version. (It is possible a new baseline will be required from time to time e.g. new major release)
- Run the upgrader with the "master" set of rules
- Start AM with the upgraded configuration
- Verify that AM has started correctly
N.B. the setup requires an external datastore i.e. not embedded datastore
- This is because setup an embedded DS requires use of the configurator, but FBC will already be available from source control so the configurator needs to be avoided.
Running the tests
Test specific data is handled by the .temper/config file.
Test specific data is handled by .yml and .temperconfig files.
Inflexible aspects of the implementation
Because this test implementation relies on a static known FBC the setup can be quite brittle. The baseline FBC does make use of some placeholders however there are a some significant hard coded values. Please refer to baseline configuration generation scripts and resources for its definitive status. The significant values are: