Enhanced ECS function tests
[nonrtric.git] / test / prodstub / README.md
index aa23b78..2fe2d59 100644 (file)
 ## producer stub - a stub interface to simulate data producers ##
 
-The producer stub is intended for function tests to simulate data producers.
+The producer stub is intended for function tests of simulate data producers.
+The simulator handles the callbacks for supervision of producers as well as create/update and delete jobs.
+As an intial step, the indended job and producers, with supported types, are setup (armed) in the simulator.
+In addition, specific response codes can configured for each callback request.
 
 
 # Ports and certificates
-TBD
+The prodstub normally opens the port 8092 for http. If a certificate and a key are provided the simulator will also open port 8093 for https.
+The certificate and key shall be placed in the same dir and the dir shall be mounted to /usr/src/app/cert in the container.
 
 | Port     | Protocol |
 | -------- | ----- |
 | 8092     | http  |
 | 8093     | https |
 
+The dir cert contains a self-signed cert. Use the script generate_cert_and_key.sh to generate a new certificate and key. The password of the certificate must be set 'test'.
+The same urls are availables on both the http port 8092 and the https port 8093. If using curl and https, the flag -k shall be given to make curl ignore checking the certificate.
+
+
+### Prodstub interface ###
+
+>Create callback<br>
+This method receives a callback for create job. The request shall contain a job json. The request is checked towards what has been setup (armed) and the response will be set accordingly. <br>
+```URI and payload, (POST): /callbacks/job/<producer_id>,  <job-json>```<br>
+```response: 200/201 (or configured response) or 400 for other errors```
+
+>Delete callback<br>
+This method receives a callback for delete job. The request is checked towards what has been setup (armed) and the response will be set accordingly. <br>
+```URI and payload, (DELETE): /callbacks/job/<producer_id>```<br>
+```response: 204 (or configured response) or 400 for other errors```
+
+>Supervision callback<br>
+This method receives a callback for producer supervision. The request is checked towards what has been setup (armed) and the response will be set accordingly. <br>
+```URI and payload, (GET): /callbacks/supervision/<producer_id>```<br>
+```response: 200 (or configured response) or 400 for other errors```
 
 
 ### Control interface ###
 
-TBD
+The control interface can be used by any test script.
+The following REST operations are available:
+
+>Arm a job create<br>
+This method arms a job for creation and sets an optional response code for create/update<br>
+```URI and payload, (PUT): /arm/create/<producer_id>/<job_id>[?response=<resonsecode>]```<br>
+```response: 200 or 400 for other errors```
+
+>Arm a job delete<br>
+This method arms a job for deletion and sets an optional response code for delete<br>
+```URI and payload, (PUT): /arm/delete/<producer_id>/<job_id>[?response=<resonsecode>]```<br>
+```response: 200 or 400 for other errors```
+
+>Arm a producer supervision<br>
+This method arms a supervision and sets an optional response code for supervision calls<br>
+```URI and payload, (PUT): /arm/delete/<producer_id>[?response=<resonsecode>]```<br>
+```response: 200 or 400 for other errors```
+
+>Arm a type for a producer<br>
+This method arms a type for a producer<br>
+```URI and payload, (PUT): /arm/type/<producer_id>/<ype-id>```<br>
+```response: 200 or 400 for other errors```
+
+>Disarm a type for a producer<br>
+This method disarms a type for a producer<br>
+```URI and payload, (DELETE): /arm/type/<producer_id>/<ype-id>```<br>
+```response: 200 or 400 for other errors```
+
+>Get job data parameters<br>
+This method fetches the job data parameters of a job<br>
+```URI and payload, (GET): /jobdata/<producer_id>job_id>```<br>
+```response: 200 or 400 for other errors```
+
+>Remove job data parameters<br>
+This method removes the job data parameters from a job<br>
+```URI and payload, (DELETE): /jobdata/<producer_id>job_id>```<br>
+```response: 200 or 400 for other errors```
+
+>Start/stop job data delivery<br>
+This method start (or stops) delivering job data to the configured target url. Action is either 'start' or s'stop'<br>
+```URI and payload, (POST): /jobdata/<producer_id>job_id>?action=action```<br>
+```response: 200 or 400 for other errors```
+
+>Counter for create job<br>
+This method returns the number of create/update calls to a job<br>
+```URI and payload, (GET): /counter/create/producer_id>/<job_id>```<br>
+```response: <integer> 200 or 400 for other errors```
+
+>Counter for delete job<br>
+This method returns the number of delete calls to a job<br>
+```URI and payload, (GET): /counter/delete/producer_id>/<job_id>```<br>
+```response: <integer> 200 or 400 for other errors```
+
+>Counter for producer supervision<br>
+This method returns the number of supervision calls to a producer<br>
+```URI and payload, (GET): /counter/supervision/producer_id>```<br>
+```response: <integer> 200 or 400 for other errors```
+
+>Get internal db<br>
+This method dumps the internal db of producer and jobs as a json file<br>
+```URI and payload, (GET): /status```<br>
+```response: <json> 200 or 400 for other errors```
+
+>Reset<br>
+This method makes a full reset by removing all producers and jobs<br>
+```URI and payload, (GET or PUT or POST): /reset```<br>
+```response: <json> 200 or 400 for other errors```
 
 
 ### Build and start ###
 
 >Build image<br>
-```docker build -t producer-stub .```
+```docker build --build-arg NEXUS_PROXY_REPO=nexus3.onap.org:10001/ -t producer-stub .```
 
 >Start the image on both http and https<br>
-```docker run -it -p 8092:8092 -p 8093:8093 --name producer-stub producer-stub```
+```docker run --rm -it -p 8092:8092 -p 8093:8093 --name producer-stub producer-stub```
+
+It will listen to http 8092 port and https 8093 port(using default certificates) at the same time.
+
+>Start the image on http and https<br>
+By default, this image has default certificates under /usr/src/app/cert
+file "cert.crt" is the certificate file
+file "key.crt" is the key file
+file "generate_cert_and_key.sh" is a shell script to generate certificate and key
+file "pass" stores the password when you run the shell script
+
+Start the container without specifing external certificates:
+```docker run --rm -it --p 8092:8092 -p 8093:8093 producer-stub```
 
 It will listen to http 8092 port and https 8093 port(using default certificates) at the same time.
 
-TBD
+This certificates/key can be overriden by mounting a volume when using "docker run" or "docker-compose"
+In 'docker run', use field:
+--volume "$PWD/certificate:/usr/src/app/cert" a1test
+```docker run --rm -it --p 8092:8092 -p 8093:8093 -v "/PATH_TO_CERT/cert:/usr/src/app/cert" producer-stub```
+In 'docker-compose.yml', use field:
+volumes:
+      - ./certificate:/usr/src/app/cert:ro
+
+The script ```prodstub-build-start.sh``` do the build and docker run in one go. This starts the stub container in stand-alone mode for basic test.<br>If the producer-stub should be executed manually with the agent, replace docker run with this command to connect to the docker network with the correct service name (--name shall be the same as configured in consul for the read and write streams).
+```docker run --rm -it -p 8092:8092 -p 8093:8093 --name producer-stub producer-stub```
+
+
+### Basic test ###
+
+Basic test is made with the script ```basic_test.sh nonsecure|secure``` which tests all the available urls with a subset of the possible operations. Choose nonsecure for http and secure for https. Use the script ```prodstub-build-start.sh``` to start the producer-stub in a container first.
+
+
+
 
 ## License