Initial commit for the affinity router test framework
added license junk.
Change-Id: I6faad2ca93b0a7bb5108a1ffe42ff82f30451ae9
diff --git a/tests/afrouter/arouter_test.json b/tests/afrouter/arouter_test.json
new file mode 100644
index 0000000..0144478
--- /dev/null
+++ b/tests/afrouter/arouter_test.json
@@ -0,0 +1,184 @@
+{
+ "servers": [
+ {
+ "name": "grpc_command",
+ "port": 5000,
+ "address":"",
+ "type": "grpc",
+ "routers": [
+ {
+ "_TODO":"Suport a router list, remove the package and service from the router",
+ "package":"voltha",
+ "service":"VolthaService",
+ "router":"vcore"
+ }
+ ]
+ }
+ ],
+ "routers": [
+ {
+ "name":"vcore",
+ "package": "voltha",
+ "service": "VolthaService",
+ "routes": [
+ {
+ "name":"dev_manager",
+ "proto_descriptor":"voltha.pb",
+ "type":"rpc_affinity_message",
+ "association":"round_robin",
+ "routing_field": "id",
+ "backend_cluster":"vcore",
+ "_COMMENT":"Methods are naturally southbound affinity binding unless otherwise specified below",
+ "methods":[ "CreateDevice",
+ "GetCoreInstance",
+ "EnableLogicalDevicePort",
+ "DisableLogicalDevicePort",
+ "EnableDevice",
+ "DisableDevice",
+ "RebootDevice",
+ "DeleteDevice",
+ "DownloadImage",
+ "CancelImageDownload",
+ "ActivateImageUpdate",
+ "RevertImageUpdate",
+ "UpdateDevicePmConfigs",
+ "CreateAlarmFilter",
+ "UpdateAlarmFilter",
+ "DeleteAlarmFilter",
+ "SelfTest"],
+ "_COMMENT":"If a method is northbound affinity binding then association is used to route",
+ "_COMMENT":"but affinity is not set southbound but only based on the response",
+ "_COMMENT":"Methods here MUST be specified above, this overrides thier default beahvior",
+ "nb_binding_methods":["CreateDevice"],
+ "_TODO":"Overrides not implemented yet, config ignored",
+ "overrides": [
+ {"methods":["abc","def"], "routing_field":"id"},
+ {"methods":["ghi","jkl"]},
+ {"method":"mno", "routing_field":"id"},
+ {"method":"pqr"}
+ ]
+ },
+ {
+ "name":"read_only",
+ "type":"round_robin",
+ "association":"round_robin",
+ "backend_cluster":"vcore",
+ "methods":[ "ListDevicePorts",
+ "ListDevicePmConfigs",
+ "GetImages",
+ "GetImageDownloadStatus",
+ "GetImageDownload",
+ "ListImageDownloads",
+ "ListDeviceFlows",
+ "ListDeviceFlowGroups",
+ "ListLogicalDeviceFlows",
+ "ListLogicalDeviceFlowGroups",
+ "ListDevices",
+ "GetDevice",
+ "GetDeviceType",
+ "GetDeviceGroup",
+ "GetLogicalDevice",
+ "GetAlarmFilter",
+ "ListLogicalDevicePorts",
+ "GetLogicalDevicePort"
+ ]
+ },
+ {
+ "name":"dev_manager_ofagent",
+ "type":"binding",
+ "_association":"round_robin",
+ "binding": {
+ "type":"header",
+ "field":"voltha_backend_name",
+ "method":"Subscribe",
+ "association":"round_robin"
+ },
+ "backend_cluster":"vcore",
+ "methods":["StreamPacketsOut",
+ "Subscribe",
+ "ListLogicalDevices",
+ "ListDeviceFlowGroups",
+ "ListLogicalDeviceFlowGroups",
+ "ListDeviceFlows",
+ "UpdateLogicalDeviceFlowTable",
+ "UpdateLogicalDeviceFlowGroupTable",
+ "ListLogicalDeviceFlows"
+ ],
+ "_TODO":"Overrides not implemented yet, config ignored",
+ "overrides": [
+ {"methods":["abc","def"], "routing_field":"id"},
+ {"methods":["ghi","jkl"]},
+ {"method":"mno", "routing_field":"id"},
+ {"method":"pqr"}
+ ]
+ }
+ ]
+ }
+ ],
+ "backend_clusters": [
+ {
+ "name":"vcore",
+ "backends":[ {
+ "name":"vcore1",
+ "type":"active_active",
+ "association": {
+ "strategy":"serial_number",
+ "location":"header",
+ "_TODO":"The key below needs to be implemented, currently hard coded",
+ "key":"voltha_serial_number"
+ },
+ "connections": [ {
+ "name":"vcore11",
+ "addr":"127.0.0.1",
+ "port":"5011"
+ },
+ {
+ "name":"vcore12",
+ "addr":"127.0.0.1",
+ "port":"5012"
+ }]
+ },
+ {
+ "name":"vcore2",
+ "type":"active_active",
+ "association": {
+ "strategy":"serial_number",
+ "location":"header"
+ },
+ "connections": [ {
+ "name":"vcore21",
+ "addr":"127.0.0.1",
+ "port":"5021"
+ },
+ {
+ "name":"vcore22",
+ "addr":"127.0.0.1",
+ "port":"5022"
+ }]
+ },
+ {
+ "name":"vcore3",
+ "type":"active_active",
+ "association": {
+ "strategy":"serial_number",
+ "location":"header"
+ },
+ "connections": [ {
+ "name":"vcore31",
+ "addr":"127.0.0.1",
+ "port":"5031"
+ },
+ {
+ "name":"vcore32",
+ "addr":"127.0.0.1",
+ "port":"5032"
+ }]
+ }]
+ }
+ ],
+ "api": {
+ "_comment":"If this isn't defined then no api is available for dynamic configuration and queries",
+ "address":"",
+ "port":55554
+ }
+}