dev-system combines the separate microservices of the CMR into a single
application to make it simpler to develop.
While a full production deployment of CMR depends upon various services (e.g., databases, message queues, portions of AWS, etc.), for development purposes it is possible to run CMR locally without these.
This instructions for this are covered in the README.md in the CMR project's
top-level directory. The command relevant to just dev-system is the
following:
$ cmr setup dev
There are several ways in which you can run tests with dev-system. The
top-level CMR README.md offers some instructions on this point, including
switching between :in-memory mode (the default) and :external (see the
section "Testing CMR" in that README for more details).
Furthermore, there is a second (and optional) test runner you can use for
running suites, test namespaces, and individual test functions. See the
docstring for run-suites in dev/user.clj for usage information.
If you would like to test messaging against a local clone of SQS/SNS, then you can do the following:
- Be sure that Docker is installed on your system and running
- Run
cmr start local sqs-sns - From the shell where you will start the REPL, you will need the
CMR_SNS_ENDPOINTandCMR_SQS_ENDPOINTenvironment variables set; in most cases you will want both of these set tohttp://localhost:4100 - You will also need to set the env var
CMR_SQS_EXTEND_POLICY_REMAINING_EXCHANGEStofalseand to set the standard AWS credential environment variables,AWS_ACCESS_KEY_IDandAWS_SECRET_ACCESS_KEY(it doesn't matter what the actual values are). - For CMR to use the local SQS/SNS, it needs to have the
CMR_DEV_SYSTEM_QUEUE_TYPEenvironment variable set to "aws". - Start the REPL, e.g.
cmr start repl. - Reset the REPL (which reloads the code and starts up the system components):
(reset)
If you want to do any debugging of the local service, you'll probably want to
install the AWS cli. On a Mac, just do brew install awscli. You can use this
to make sure that the local SQS/SNS has started:
$ cmr show sqs-queues
As noted above, you will need to create a profiles.clj in the dev-system
directory. This will provide configuration/authentication information required
by CMR for a local, in-memory "deployment". You will need to contact a core
CMR developer for the appropriate values for each key in profiles.clj.
dev-system is meant to be used for testing only. It provides a control API
that allows unrestricted access to shutdown the system, evaluate arbitrary
code, remove all data, etc.
We need to keep the latest version of the umm-cmn-json-schema.json in sync for all concept types. When the umm-cmn-json-schema.json is updated for one concept type, the corresponding files should be updated for all concept types.
Copyright © 2014-2018 NASA