X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=test%2Fprodstub%2FREADME.md;h=2fe2d598e038bc14813223bca368136e18d394b5;hb=7fbe885e3adfb8257d78ac500dba0b53a14f5d52;hp=aa23b78c3baefdf4d97d213504121ce9172241ed;hpb=b5cb68ea0e77d0a1421b4f17cc58b981628c29f7;p=nonrtric.git diff --git a/test/prodstub/README.md b/test/prodstub/README.md index aa23b78c..2fe2d598 100644 --- a/test/prodstub/README.md +++ b/test/prodstub/README.md @@ -1,34 +1,153 @@ ## 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
+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.
+```URI and payload, (POST): /callbacks/job/, ```
+```response: 200/201 (or configured response) or 400 for other errors``` + +>Delete callback
+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.
+```URI and payload, (DELETE): /callbacks/job/```
+```response: 204 (or configured response) or 400 for other errors``` + +>Supervision callback
+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.
+```URI and payload, (GET): /callbacks/supervision/```
+```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
+This method arms a job for creation and sets an optional response code for create/update
+```URI and payload, (PUT): /arm/create//[?response=]```
+```response: 200 or 400 for other errors``` + +>Arm a job delete
+This method arms a job for deletion and sets an optional response code for delete
+```URI and payload, (PUT): /arm/delete//[?response=]```
+```response: 200 or 400 for other errors``` + +>Arm a producer supervision
+This method arms a supervision and sets an optional response code for supervision calls
+```URI and payload, (PUT): /arm/delete/[?response=]```
+```response: 200 or 400 for other errors``` + +>Arm a type for a producer
+This method arms a type for a producer
+```URI and payload, (PUT): /arm/type//```
+```response: 200 or 400 for other errors``` + +>Disarm a type for a producer
+This method disarms a type for a producer
+```URI and payload, (DELETE): /arm/type//```
+```response: 200 or 400 for other errors``` + +>Get job data parameters
+This method fetches the job data parameters of a job
+```URI and payload, (GET): /jobdata/job_id>```
+```response: 200 or 400 for other errors``` + +>Remove job data parameters
+This method removes the job data parameters from a job
+```URI and payload, (DELETE): /jobdata/job_id>```
+```response: 200 or 400 for other errors``` + +>Start/stop job data delivery
+This method start (or stops) delivering job data to the configured target url. Action is either 'start' or s'stop'
+```URI and payload, (POST): /jobdata/job_id>?action=action```
+```response: 200 or 400 for other errors``` + +>Counter for create job
+This method returns the number of create/update calls to a job
+```URI and payload, (GET): /counter/create/producer_id>/```
+```response: 200 or 400 for other errors``` + +>Counter for delete job
+This method returns the number of delete calls to a job
+```URI and payload, (GET): /counter/delete/producer_id>/```
+```response: 200 or 400 for other errors``` + +>Counter for producer supervision
+This method returns the number of supervision calls to a producer
+```URI and payload, (GET): /counter/supervision/producer_id>```
+```response: 200 or 400 for other errors``` + +>Get internal db
+This method dumps the internal db of producer and jobs as a json file
+```URI and payload, (GET): /status```
+```response: 200 or 400 for other errors``` + +>Reset
+This method makes a full reset by removing all producers and jobs
+```URI and payload, (GET or PUT or POST): /reset```
+```response: 200 or 400 for other errors``` ### Build and start ### >Build image
-```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
-```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
+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.
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