-
Notifications
You must be signed in to change notification settings - Fork 5
Description
The Executor module is responsible for executing the Verification and Validation tests requested by the Curator component.
It receives a test request with the associated descriptor file (Test Descriptor), a file that contains the test configurations, dependencies, validation and verification conditions, etc. With this information, this module generates a docker-compose file and executes the test sequence with the docker-compose tool.
The next picture shows an example of the translation between the test descriptor and the docker-compose.yaml file:
Once the test is finished, the Executor check the Validation and Verification conditions, stores the results in the VnV repository and generates a "Completion Test Response" to the Curator component.
With the Release 5.1 new features, Executor has the ability to deploy probe's containers in other machines than the V&V one. If the EXECUTION_HOST is included in the test descriptor the probe's docker containers are instantiated in the provided EXECUTION_HOST using the configured NFS server to share the results files between the probes and the executor itself.
The generated docker-compose file is automatically adapted to enable the use of the NFS server.
...
volumes:
...
- data:/output
volumes:
data:
driver: local
driver_opts:
type: nfs
device: :/executor/tests/c95d30dd-0cae-4d4e-a803-013ba516fc90/output
o: addr=localhost,rw
Files and results are shared between executor and execution hosts via NFS.
{
"test": {
"author": "Ignacio Dominguez, Felipe Vicens (ATOS), Santiago Rodríguez (OPTARE)",
"description": "Performance test for video analysis",
"descriptor_schema": "https://raw.githubusercontent.com/sonata-nfv/tng-schema/master/test-descriptor/testdescriptor-schema.yml",
"name": "test-immersive-media",
"vendor": "eu.5gtango.atos",
"version": "0.1",
"phases": [
{
"id": "setup",
"steps": [
{
"action": "deploy",
"description": "Deploying a NS",
"name": "deployment"
},
{
"action": "configure",
"description": null,
"name": "configuration",
"probes": [
{
"name": "parser",
"image": "ignaciodomin/media-parser:dev",
"description": "Parser",
"parameters": []
},
{
"description": "Content Producer Emulator (CPE) To generate a RTMP flow",
"image": "ignaciodomin/media-cpe:plane",
"name": "cpe",
"parameters": [
{
"key": "AGGREGATOR",
"value": "10.200.16.32"
},
{
"key": "APP",
"value": "test"
},
{
"key": "STREAM",
"value": "test"
}
]
},
{
"description": "Content Consumer Emulator (CCE) To play HLS flows from Streaming engine",
"image": "ignaciodomin/media-cce:dev",
"name": "cce",
"parameters": [
{
"key": "STREAMMING_ENGINE",
"value": "10.200.16.34"
},
{
"key": "STREAM",
"value": "test"
}
]
}
]
}
]
},
{
"id": "exercise",
"steps": [
{
"description": "Starting the CPE that simulates the camera",
"run": "cpe",
"entrypoint": "/app/entrypoint.sh",
"command": "/bin/sh",
"instances": 1,
"output": [
{
"results": "logs.txt"
}
]
},
{
"description": "Starting the CCE that simulates the consumer",
"run": "cce",
"entrypoint": "/app/entrypoint.sh",
"start_delay": 20,
"instances": 1,
"output": [
{
"results": "logs.txt"
}
]
},
{
"description": "Starting the parser",
"run": "parser",
"entrypoint": "/app/entrypoint.sh",
"instances": 1,
"output": [
{
"results": "logs.txt"
}
],
"dependencies": [
"cpe",
"cce"
]
}
]
},
{
"id": "verification",
"steps": [
{
"name": "cpe",
"description": "Check cpe",
"step": "cpe",
"conditions": [
{
"name": "status",
"file": "status.txt",
"find": "ERROR",
"condition": "not present",
"verdict": "pass"
}
]
},
{
"name": "cce",
"description": "Check cce",
"step": "cce",
"conditions": [
{
"name": "status",
"file": "status.txt",
"find": "ERROR",
"condition": "not present",
"verdict": "pass"
}
]
},
{
"name": "parser",
"description": "Check obtained results",
"step": "parser",
"conditions": [
{
"name": "lost-frames",
"file": "result.json",
"type": "json",
"find": "lost-frames",
"condition": "<",
"value": "90",
"verdict": "pass"
}
]
}
]
}
],
"service_platforms": [
"SONATA"
],
"test_category": [
"benchmarking"
],
"test_tags": [
"rtmp-media-service"
],
"test_descriptor_uuid": "deb05341-1337-1337-1337-1c3ecd41e51d",
"package_descriptor_uuid": "f5f1bfcc-73fc-4c7f-a102-1c5f779b8bdd",
"network_service_descriptor_uuid": "5b02b0dd-f7dc-4a7a-919b-414582e2a678",
"service_instance_uuid": "d54bcfb6-ab05-495a-85c7-e462fd096be9"
},
"service_instantiation_time": 559.1157853603363,
"execution_host": "ip_host",
"callbacks": [
{
"name": "running",
"path": "http://tng-vnv-curator:6200/api/v1/test-preparations/97809278-42a1-4794-b0b2-f022766f35e1/change"
},
{
"name": "cancel",
"path": "http://tng-vnv-curator:6200/api/v1/test-preparations/97809278-42a1-4794-b0b2-f022766f35e1/tests/<test_uuid>/cancel"
},
{
"name": "finish",
"path": "http://tng-vnv-curator:6200/api/v1/test-preparations/97809278-42a1-4794-b0b2-f022766f35e1/tests/<test_uuid>/finish"
}
]
}