X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=test%2Fcr%2FREADME.md;h=55c5cc5e64d2a7811d6c02db13cca740cd6e528f;hb=198cb6a293b35b9e5226a23f93ace81b41447811;hp=31dae4caa01e97c4d2ee95b255a0c2106322898d;hpb=dc000df63c9bbedf8948db0fe76d46143a241399;p=nonrtric.git
diff --git a/test/cr/README.md b/test/cr/README.md
index 31dae4ca..55c5cc5e 100644
--- a/test/cr/README.md
+++ b/test/cr/README.md
@@ -1,47 +1,91 @@
-## callback receiver - a stub interface to receive callbacks ##
+# callback receiver - a stub interface to receive callbacks
-The mrstub is intended for function tests to simulate a message router.
-The mrstub exposes the read and write urls, used by the agent, as configured in consul.
-In addition, request messages can be fed to the mrstub and the response messages can be read by polling.
+The callback receiver is intended for function tests to simulate a RAPP.
+The callback receiver exposes the read and write urls, used by the agent, as configured in service.
+The callback receiver receives notifications from PMS when synchronization happens between PMS and RICs. However, the callback receiver can be uses to receive any json payload from any source.
+## Ports and certificates
-### Control interface ###
+The CR normally opens the port 8090 for http. If a certificate and a key are provided the simulator will also open port 8091 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 |
+| -------- | ----- |
+| 8090 | http |
+| 8091 | 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 available on both the http port 8090 and the https port 8091. If using curl and https, the flag -k shall be given to make curl ignore checking the certificate.
+
+### Control interface
The control interface can be used by any test script.
The following REST operations are available:
->Send a message to MR
-This method puts a request message in the queue for the agent to pick up. The returned correlationId (auto generated by the mrstub) is used when polling for the reposone message of this particular request.
-```URI and parameter, (GET): /get-event/```
-```response: message + 200 or 204```
-
->Receive a message response for MR for the included correlation id
-The method is for polling of messages, returns immediately containing the received response (if any) for the supplied correlationId.
-```URI and payload, (PUT or POST): /callbacks/ ```
+>Send a message to CR
+This method puts a request message from PMS to notify that sychronization between PMS and certain RIC happens.
+```URI and payload, (PUT or POST): /callbacks/ ```
```response: OK 200 or 500 for other errors```
+>Fetch one message for an id from CR
+This method fetches the oldes message for an id, and removes the message.
+```URI and payload, (GET): /get-event/```
+```response: 200 or 500 for other errors```
+
+>Fetch all messages for an id from CR
+This method fetches all message in an array for an id, and removes all messages.
+```URI and payload, (GET): /get-all-events/```
+```response: 200 or 500 for other errors```
+
+>Dump all currently wating callback messages in CR
+This method fetches all message in an array for an id. Messages are left intact in the CR.
+```URI and payload, (GET): /db```
+```response: 200```
+
>Metrics - counters
There are a number of counters that can be read to monitor the message processing. Do a http GET on any of the current counters and an integer value will be returned with http response code 200.
```/counter/received_callbacks``` - The total number of received callbacks
```/counter/fetched_callbacks``` - The total number of fetched callbacks
```/counter/current_messages``` - The current number of callback messages waiting to be fetched
+All counters also support the query parameter "id" to fetch counter for one individual id, eg ```/counter/current_messages?id=my-id```
+An additional counter is available to log remote hosts calling the server
+```/counter/remote_hosts``` - Lists all unique ip/host name that has sent messages on the callback endpoint
-
-### Build and start ###
+### Build and start
>Build image
-```docker build -t callback-receiver .```
+```docker build --build-arg NEXUS_PROXY_REPO=nexus3.onap.org:10001/ -t callback-receiver .```
+
+>Start the image on both http and https
+```docker run --rm -it -p 8090:8090 -p 8091:8091 callback-receiver```
+
+It will listen to http 8090 port and https 8091 port(using default certificates) at the same time.
+
+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
+
+This certificates/key can be overriden by mounting a volume when using "docker run" or "docker-compose"
+In 'docker run', use field:
+>```-v "$PWD/certificate:/usr/src/app/cert"```
+
+eg:
+>```docker run --rm -it -p 8090:8090 -p 8091:8091 -v "/PATH_TO_CERT/cert:/usr/src/app/cert" callback-receiver```
->Start the image
-```docker run -it -p 8090:8090 callback-receiver```
+In 'docker-compose.yml', use field:
+>```volumes: - ./certificate:/usr/src/app/cert:ro```
-The script ```crstub-build-start.sh``` do the above two steps in one go. This starts the callback-receiver container in stand-alone mode for basic test.
If the callback-receiver 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 aligned with the other components, i.e. the host named given in all callback urls).
-```docker run -it -p 8090:8090 --network nonrtric-docker-net --name callback-receiver callback-receiver```
+The script ```cr-build-start.sh``` do the above two steps in one go. This starts the callback-receiver container in stand-alone mode for basic test.
If the callback-receiver 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 aligned with the other components, i.e. the host named given in all callback urls).
+>```docker run --rm -it -p 8090:8090 -p 8091:8091 --network nonrtric-docker-net --name callback-receiver callback-receiver```
+>Start the image on http only
+```docker run --rm -it -p 8090:8090 callback-receiver```
-### Basic test ###
+### Basic test
-Basic test is made with the script ```basic_test.sh``` which tests all the available urls with a subset of the possible operations. Use the script ```cr-build-start.sh``` to start the callback-receiver in a container first.
+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. Use the script ```cr-build-start.sh``` to start the callback-receiver in a container first.
## License
@@ -56,4 +100,4 @@ Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
-limitations under the License.
\ No newline at end of file
+limitations under the License.