From 05733ab5105f440e44eb56dc37e6d14615c36454 Mon Sep 17 00:00:00 2001 From: EzekielaRakotoarijaona Date: Fri, 11 Jan 2019 14:53:30 +0100 Subject: Fix unit testing instability Migration of most of the unit tests from JUnit to Karate Framework Remove of the scheduling tasks for testing. Change-Id: Ic51378443bd6c12f247fa50b2b08ee881264dac4 Issue-ID: EXTAPI-178 Signed-off-by: EzekielaRakotoarijaona --- .../resources/karatetest/data/serviceOrder.json | 1026 ++++++++++++++++++++ src/test/resources/karatetest/data/subscriber.json | 17 + 2 files changed, 1043 insertions(+) create mode 100644 src/test/resources/karatetest/data/serviceOrder.json create mode 100644 src/test/resources/karatetest/data/subscriber.json (limited to 'src/test/resources/karatetest/data') diff --git a/src/test/resources/karatetest/data/serviceOrder.json b/src/test/resources/karatetest/data/serviceOrder.json new file mode 100644 index 0000000..89cc6e8 --- /dev/null +++ b/src/test/resources/karatetest/data/serviceOrder.json @@ -0,0 +1,1026 @@ +[ + { + "id": "test", + "state": "acknowledged", + "externalId": "LudONAP001", + "priority": "1", + "description": "Ludo first ONAP order", + "category": "Consumer", + "requestedStartDate": "2019-01-23T12:34:56.123456789Z", + "requestedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@baseType": "toto", + "completionDateTime": "2019-01-23T12:34:56.123456789Z", + "expectedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@schemaLocation": "/tutu", + "orderRelationship": [ + { + "id": "test", + "href": "test", + "referredType": "test", + "type": "test" + } + ], + "relatedParty": [ + { + "id": "6490", + "role": "ONAPcustomer", + "referredType": "individual", + "name": "Jean Pontus" + } + ], + "orderItem": [ + { + "id": "A", + "action": "add", + "state": "active", + "service": { + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + } + }, + { + "id": "B", + "action": "add", + "state": "active", + "service": { + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + }, + "orderItemRelationship": [ + { + "id": "A", + "type": "reliesOn" + } + ] + } + ] + }, + { + "id": "test1", + "state": "acknowledged", + "externalId": "LudONAP001", + "priority": "1", + "description": "Ludo first ONAP order", + "category": "Consumer", + "requestedStartDate": "2019-01-23T12:34:56.123456789Z", + "requestedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@baseType": "toto", + "completionDateTime": "2019-01-23T12:34:56.123456789Z", + "expectedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@schemaLocation": "/tutu", + "orderRelationship": [ + { + "id": "test", + "href": "test", + "referredType": "test", + "type": "test" + } + ], + "relatedParty": [ + { + "id": "6490", + "role": "ONAPcustomer", + "referredType": "individual", + "name": "Jean Pontus" + } + ], + "orderItem": [ + { + "id": "A", + "action": "add", + "state": "active", + "service": { + "state": "active", + "serviceSpecification": { + "id": "toto" + } + } + }, + { + "id": "B", + "action": "add", + "state": "active", + "service": { + "state": "active", + "serviceSpecification": { + "id": "toto" + } + }, + "orderItemRelationship": [ + { + "id": "A", + "type": "reliesOn" + } + ] + } + ] + }, + { + "id": "test2", + "state": "acknowledged", + "externalId": "LudONAP001", + "priority": "1", + "description": "Ludo first ONAP order", + "category": "Consumer", + "requestedStartDate": "2019-01-23T12:34:56.123456789Z", + "requestedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@baseType": "toto", + "completionDateTime": "2019-01-23T12:34:56.123456789Z", + "expectedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@schemaLocation": "/tutu", + "orderRelationship": [ + { + "id": "test", + "href": "test", + "referredType": "test", + "type": "test" + } + ], + "relatedParty": [], + "orderItem": [ + { + "id": "A", + "action": "add", + "state": "active", + "service": { + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + } + }, + { + "id": "B", + "action": "add", + "state": "active", + "service": { + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + }, + "orderItemRelationship": [ + { + "id": "A", + "type": "reliesOn" + } + ] + } + ] + }, + { + "id": "test3", + "state": "acknowledged", + "externalId": "LudONAP001", + "priority": "1", + "description": "Ludo first ONAP order", + "category": "Consumer", + "requestedStartDate": "2019-01-23T12:34:56.123456789Z", + "requestedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@baseType": "toto", + "completionDateTime": "2019-01-23T12:34:56.123456789Z", + "expectedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@schemaLocation": "/tutu", + "orderRelationship": [ + { + "id": "test", + "href": "test", + "referredType": "test", + "type": "test" + } + ], + "relatedParty": null, + "orderItem": [ + { + "id": "A", + "action": "add", + "state": "active", + "service": { + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + } + }, + { + "id": "B", + "action": "add", + "state": "active", + "service": { + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + }, + "orderItemRelationship": [ + { + "id": "A", + "type": "reliesOn" + } + ] + } + ] + }, + { + "id": "test4", + "state": "acknowledged", + "externalId": "LudONAP001", + "priority": "1", + "description": "Ludo first ONAP order", + "category": "Consumer", + "requestedStartDate": "2019-01-23T12:34:56.123456789Z", + "requestedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@baseType": "toto", + "completionDateTime": "2019-01-23T12:34:56.123456789Z", + "expectedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@schemaLocation": "/tutu", + "orderRelationship": [ + { + "id": "test", + "href": "test", + "referredType": "test", + "type": "test" + } + ], + "relatedParty": [ + { + "id": "new", + "role": "ONAPcustomer", + "referredType": "individual", + "name": "romain" + } + ], + "orderItem": [ + { + "id": "A", + "action": "add", + "state": "active", + "service": { + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + } + }, + { + "id": "B", + "action": "add", + "state": "active", + "service": { + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + }, + "orderItemRelationship": [ + { + "id": "A", + "type": "reliesOn" + } + ] + } + ] + }, + { + "id": "test5", + "state": "acknowledged", + "externalId": "LudONAP001", + "priority": "1", + "description": "Ludo first ONAP order", + "category": "Consumer", + "requestedStartDate": "2019-01-23T12:34:56.123456789Z", + "requestedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@baseType": "toto", + "completionDateTime": "2019-01-23T12:34:56.123456789Z", + "expectedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@schemaLocation": "/tutu", + "orderRelationship": [ + { + "id": "test", + "href": "test", + "referredType": "test", + "type": "test" + } + ], + "relatedParty": [ + { + "id": "6490", + "role": "ONAPcustomer", + "referredType": "individual", + "name": "Jean Pontus" + } + ], + "orderItem": [ + { + "id": "A", + "action": "delete", + "state": "active", + "service": { + "id": "null", + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + } + }, + { + "id": "B", + "action": "delete", + "state": "active", + "service": { + "id": "null", + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + }, + "orderItemRelationship": [ + { + "id": "A", + "type": "reliesOn" + } + ] + } + ] + }, + { + "id": "test6", + "state": "acknowledged", + "externalId": "LudONAP001", + "priority": "1", + "description": "Ludo first ONAP order", + "category": "Consumer", + "requestedStartDate": "2019-01-23T12:34:56.123456789Z", + "requestedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@baseType": "toto", + "completionDateTime": "2019-01-23T12:34:56.123456789Z", + "expectedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@schemaLocation": "/tutu", + "orderRelationship": [ + { + "id": "test", + "href": "test", + "referredType": "test", + "type": "test" + } + ], + "relatedParty": [ + { + "id": "6490", + "role": "ONAPcustomer", + "referredType": "individual", + "name": "Jean Pontus" + } + ], + "orderItem": [ + { + "id": "A", + "action": "modify", + "state": "active", + "service": { + "id": "null", + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + } + }, + { + "id": "B", + "action": "modify", + "state": "active", + "service": { + "id": "null", + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + }, + "orderItemRelationship": [ + { + "id": "A", + "type": "reliesOn" + } + ] + } + ] + }, + { + "id": "test7", + "state": "acknowledged", + "externalId": "LudONAP001", + "priority": "1", + "description": "Ludo first ONAP order", + "category": "Consumer", + "requestedStartDate": "2019-01-23T12:34:56.123456789Z", + "requestedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@baseType": "toto", + "completionDateTime": "2019-01-23T12:34:56.123456789Z", + "expectedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@schemaLocation": "/tutu", + "orderRelationship": [ + { + "id": "test", + "href": "test", + "referredType": "test", + "type": "test" + } + ], + "relatedParty": [ + { + "id": "6490", + "role": "ONAPcustomer", + "referredType": "individual", + "name": "Jean Pontus" + } + ], + "orderItem": [ + { + "id": "A", + "action": "add", + "state": "active", + "service": { + "id": "toto", + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + } + }, + { + "id": "B", + "action": "add", + "state": "active", + "service": { + "id": "toto", + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + }, + "orderItemRelationship": [ + { + "id": "A", + "type": "reliesOn" + } + ] + } + ] + }, + { + "id": "test8", + "state": "acknowledged", + "externalId": "LudONAP001", + "priority": "1", + "description": "Ludo first ONAP order", + "category": "Consumer", + "requestedStartDate": "2019-01-23T12:34:56.123456789Z", + "requestedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@baseType": "toto", + "completionDateTime": "2019-01-23T12:34:56.123456789Z", + "expectedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@schemaLocation": "/tutu", + "orderRelationship": [ + { + "id": "test", + "href": "test", + "referredType": "test", + "type": "test" + } + ], + "relatedParty": [ + { + "id": "new", + "role": "ONAPcustomer", + "referredType": "individual", + "name": "romain" + } + ], + "orderItem": [ + { + "id": "A", + "action": "delete", + "state": "active", + "service": { + "id": "test", + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + } + }, + { + "id": "B", + "action": "delete", + "state": "active", + "service": { + "id": "test", + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + }, + "orderItemRelationship": [ + { + "id": "A", + "type": "reliesOn" + } + ] + } + ] + }, + { + "id": "test9", + "state": "acknowledged", + "externalId": "LudONAP001", + "priority": "1", + "description": "Ludo first ONAP order", + "category": "Consumer", + "requestedStartDate": "2019-01-23T12:34:56.123456789Z", + "requestedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@baseType": "toto", + "completionDateTime": "2019-01-23T12:34:56.123456789Z", + "expectedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@schemaLocation": "/tutu", + "orderRelationship": [ + { + "id": "test", + "href": "test", + "referredType": "test", + "type": "test" + } + ], + "relatedParty": [ + { + "id": "6490", + "role": "ONAPcustomer", + "referredType": "individual", + "name": "Jean Pontus" + } + ], + "orderItem": [ + { + "id": "A", + "action": "delete", + "state": "active", + "service": { + "id": "e4688e5f-61a0-4f8b-ae02-a2fbde623bcb", + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + } + }, + { + "id": "B", + "action": "delete", + "state": "active", + "service": { + "id": "e4688e5f-61a0-4f8b-ae02-a2fbde623bcb", + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + }, + "orderItemRelationship": [ + { + "id": "A", + "type": "reliesOn" + } + ] + } + ] + }, + { + "id": "test10", + "state": "acknowledged", + "externalId": "LudONAP001", + "priority": "1", + "description": "Ludo first ONAP order", + "category": "Consumer", + "requestedStartDate": "2019-01-23T12:34:56.123456789Z", + "requestedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@baseType": "toto", + "completionDateTime": "2019-01-23T12:34:56.123456789Z", + "expectedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@schemaLocation": "/tutu", + "orderRelationship": [ + { + "id": "test", + "href": "test", + "referredType": "test", + "type": "test" + } + ], + "relatedParty": [ + { + "id": "6490", + "role": "ONAPcustomer", + "referredType": "individual", + "name": "Jean Pontus" + } + ], + "orderItem": [ + { + "id": "A", + "action": "delete", + "state": "active", + "service": { + "id": "no_response", + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + } + }, + { + "id": "B", + "action": "delete", + "state": "active", + "service": { + "id": "no_response", + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + }, + "orderItemRelationship": [ + { + "id": "A", + "type": "reliesOn" + } + ] + } + ] + }, + { + "id": "test11", + "state": "acknowledged", + "externalId": "LudONAP001", + "priority": "1", + "description": "Ludo first ONAP order", + "category": "Consumer", + "requestedStartDate": "2019-01-23T12:34:56.123456789Z", + "requestedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@baseType": "toto", + "completionDateTime": "2019-01-23T12:34:56.123456789Z", + "expectedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@schemaLocation": "/tutu", + "orderRelationship": [ + { + "id": "test", + "href": "test", + "referredType": "test", + "type": "test" + } + ], + "relatedParty": [ + { + "id": "6490", + "role": "ONAPcustomer", + "referredType": "individual", + "name": "Jean Pontus" + } + ], + "orderItem": [ + { + "id": "A", + "action": "noChange", + "state": "active", + "service": { + "id": "e4688e5f-61a0-4f8b-ae02-a2fbde623bcb", + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + } + }, + { + "id": "B", + "action": "noChange", + "state": "active", + "service": { + "id": "e4688e5f-61a0-4f8b-ae02-a2fbde623bcb", + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + }, + "orderItemRelationship": [ + { + "id": "A", + "type": "reliesOn" + } + ] + } + ] + }, + { + "id": "test12", + "state": "acknowledged", + "externalId": "LudONAP001", + "priority": "1", + "description": "Ludo first ONAP order", + "category": "Consumer", + "requestedStartDate": "2019-01-23T12:34:56.123456789Z", + "requestedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@baseType": "toto", + "completionDateTime": "2019-01-23T12:34:56.123456789Z", + "expectedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@schemaLocation": "/tutu", + "orderRelationship": [ + { + "id": "test", + "href": "test", + "referredType": "test", + "type": "test" + } + ], + "relatedParty": [ + { + "id": "6490", + "role": "ONAPcustomer", + "referredType": "individual", + "name": "Jean Pontus" + } + ], + "orderItem": [ + { + "id": "A", + "action": "noChange", + "state": "active", + "service": { + "id": "e4688e5f-61a0-4f8b-ae02-a2fbde623bcb", + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + } + }, + { + "id": "B", + "action": "delete", + "state": "active", + "service": { + "id": "e4688e5f-61a0-4f8b-ae02-a2fbde623bcb", + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + }, + "orderItemRelationship": [ + { + "id": "A", + "type": "reliesOn" + } + ] + } + ] + }, + { + "id": "test13", + "state": "acknowledged", + "externalId": "LudONAP001", + "priority": "1", + "description": "Ludo first ONAP order", + "category": "Consumer", + "requestedStartDate": "2019-01-23T12:34:56.123456789Z", + "requestedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@baseType": "toto", + "completionDateTime": "2019-01-23T12:34:56.123456789Z", + "expectedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@schemaLocation": "/tutu", + "orderRelationship": [ + { + "id": "test", + "href": "test", + "referredType": "test", + "type": "test" + } + ], + "relatedParty": [ + { + "id": "6490", + "role": "ONAPcustomer", + "referredType": "individual", + "name": "Jean Pontus" + } + ], + "orderItem": [ + { + "id": "A", + "action": "delete", + "state": "active", + "service": { + "id": "e4688e5f-61a0-4f8b-ae02-a2fbde623bcb", + "state": "active", + "serviceSpecification": { + "id": "undefined" + } + } + }, + { + "id": "B", + "action": "delete", + "state": "active", + "service": { + "id": "e4688e5f-61a0-4f8b-ae02-a2fbde623bcb", + "state": "active", + "serviceSpecification": { + "id": "undefined" + } + }, + "orderItemRelationship": [ + { + "id": "A", + "type": "reliesOn" + } + ] + } + ] + }, + { + "id": "test14", + "state": "acknowledged", + "externalId": "LudONAP001", + "priority": "1", + "description": "Ludo first ONAP order", + "category": "Consumer", + "requestedStartDate": "2019-01-23T12:34:56.123456789Z", + "requestedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@baseType": "toto", + "completionDateTime": "2019-01-23T12:34:56.123456789Z", + "expectedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@schemaLocation": "/tutu", + "orderRelationship": [ + { + "id": "test", + "href": "test", + "referredType": "test", + "type": "test" + } + ], + "relatedParty": [ + { + "id": "6490", + "role": "ONAPcustomer", + "referredType": "individual", + "name": "Jean Pontus" + } + ], + "orderItem": [ + { + "id": "A", + "action": "add", + "state": "active", + "service": { + "state": "active", + "serviceSpecification": { + "id": "333" + } + } + }, + { + "id": "B", + "action": "add", + "state": "active", + "service": { + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + }, + "orderItemRelationship": [ + { + "id": "A", + "type": "reliesOn" + } + ] + } + ] + }, + { + "id": "test15", + "state": "acknowledged", + "externalId": "extid1", + "priority": "1", + "description": "toto", + "category": "Consumer", + "requestedStartDate": "2019-01-23T12:34:56.123456789Z", + "requestedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@baseType": "toto", + "completionDateTime": "2019-01-23T12:34:56.123456789Z", + "expectedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@schemaLocation": "/tutu", + "orderRelationship": [ + { + "id": "test", + "href": "test", + "referredType": "test", + "type": "test" + } + ], + "relatedParty": [ + { + "id": "6490", + "role": "ONAPcustomer", + "referredType": "individual", + "name": "Jean Pontus" + } + ], + "orderItem": [ + { + "id": "A", + "action": "add", + "state": "active", + "service": { + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + } + }, + { + "id": "B", + "action": "add", + "state": "active", + "service": { + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + }, + "orderItemRelationship": [ + { + "id": "A", + "type": "reliesOn" + } + ] + } + ] + }, + { + "id": "test16", + "state": "acknowledged", + "externalId": "extid2", + "priority": "1", + "description": "toto", + "category": "Consumer", + "requestedStartDate": "2019-01-23T12:34:56.123456789Z", + "requestedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@baseType": "toto", + "completionDateTime": "2019-01-23T12:34:56.123456789Z", + "expectedCompletionDate": "2019-01-23T12:34:56.123456789Z", + "@schemaLocation": "/tutu", + "orderRelationship": [ + { + "id": "test", + "href": "test", + "referredType": "test", + "type": "test" + } + ], + "relatedParty": [ + { + "id": "6490", + "role": "ONAPcustomer", + "referredType": "individual", + "name": "Jean Pontus" + } + ], + "orderItem": [ + { + "id": "A", + "action": "add", + "state": "active", + "service": { + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + } + }, + { + "id": "B", + "action": "add", + "state": "active", + "service": { + "state": "active", + "serviceSpecification": { + "id": "1e3feeb0-8e36-46c6-862c-236d9c626439" + } + }, + "orderItemRelationship": [ + { + "id": "A", + "type": "reliesOn" + } + ] + } + ] + } +] diff --git a/src/test/resources/karatetest/data/subscriber.json b/src/test/resources/karatetest/data/subscriber.json new file mode 100644 index 0000000..e7c08ad --- /dev/null +++ b/src/test/resources/karatetest/data/subscriber.json @@ -0,0 +1,17 @@ +[ + { + "id": "id", + "callback": "http://localhost:8080/test", + "query": "eventType = ServiceOrderCreationNotification" + }, + { + "id": "id", + "callback": "http://localhost/test", + "query": "eventType=ServiceOrderStateChangeNotification" + }, + { + "id": "id", + "callback": "http://localhost/test", + "query": "eventType=ServiceOrderItemStateChangeNotification" + } +] \ No newline at end of file -- cgit 1.2.3-korg