Onboard music CSIT into integration project

Issue-ID: MUSIC-43

Change-Id: I680d6255a9d396bf6a546268b4c58cff4b66b2e4
Signed-off-by: Leonardo Bellini <leonardo.bellini@att.com>
diff --git a/test/csit/tests/music/music-suite/__init__.robot b/test/csit/tests/music/music-suite/__init__.robot
new file mode 100644
index 0000000..fb654d7
--- /dev/null
+++ b/test/csit/tests/music/music-suite/__init__.robot
@@ -0,0 +1,4 @@
+*** Settings ***
+Documentation    Integration - Suite 1
+
+
diff --git a/test/csit/tests/music/music-suite/data/createkeyspace-network.json b/test/csit/tests/music/music-suite/data/createkeyspace-network.json
new file mode 100644
index 0000000..9514bae
--- /dev/null
+++ b/test/csit/tests/music/music-suite/data/createkeyspace-network.json
@@ -0,0 +1,6 @@
+{ 	
+  "consistencyInfo":{"type":"eventual"},
+  "durabilityOfWrites":"true",
+  "keyspaceName":"txt",
+  "replicationInfo":{"class" :"NetworkTopologyStrategy","DC1":"1", "DC2":"1", "DC3":"1"}
+}
diff --git a/test/csit/tests/music/music-suite/data/createkeyspace-simple.json b/test/csit/tests/music/music-suite/data/createkeyspace-simple.json
new file mode 100644
index 0000000..31f4b6a
--- /dev/null
+++ b/test/csit/tests/music/music-suite/data/createkeyspace-simple.json
@@ -0,0 +1,6 @@
+{ 	
+  "consistencyInfo":{"type":"eventual"},
+  "durabilityOfWrites":"true",
+  "keyspaceName":"txt",
+  "replicationInfo":{"class" :"SimpleStrategy","replication_factor": 1}
+}
diff --git a/test/csit/tests/music/music-suite/data/createkeyspace.json b/test/csit/tests/music/music-suite/data/createkeyspace.json
new file mode 100644
index 0000000..31f4b6a
--- /dev/null
+++ b/test/csit/tests/music/music-suite/data/createkeyspace.json
@@ -0,0 +1,6 @@
+{ 	
+  "consistencyInfo":{"type":"eventual"},
+  "durabilityOfWrites":"true",
+  "keyspaceName":"txt",
+  "replicationInfo":{"class" :"SimpleStrategy","replication_factor": 1}
+}
diff --git a/test/csit/tests/music/music-suite/data/createtable.json b/test/csit/tests/music/music-suite/data/createtable.json
new file mode 100644
index 0000000..71b4716
--- /dev/null
+++ b/test/csit/tests/music/music-suite/data/createtable.json
@@ -0,0 +1,12 @@
+{
+	"clusteringOrder":null,
+	"consistencyInfo":{"type":"eventual"},
+	"fields":{"PRIMARY KEY":"(name)",
+	"name":"text","job":"text","threadIndex":"int"},
+	"keyspaceName":null,
+	"primaryKey":null,
+	"properties":null,
+	"sortingKey":null,
+	"tableName":null
+}
+
diff --git a/test/csit/tests/music/music-suite/data/deleterow_eventual.json b/test/csit/tests/music/music-suite/data/deleterow_eventual.json
new file mode 100644
index 0000000..ed9a289
--- /dev/null
+++ b/test/csit/tests/music/music-suite/data/deleterow_eventual.json
@@ -0,0 +1,5 @@
+{
+	"consistencyInfo":   {"type":"eventual"},   
+	"timestamp":null,   
+	"ttl":null   
+}
diff --git a/test/csit/tests/music/music-suite/data/dropkeyspace.json b/test/csit/tests/music/music-suite/data/dropkeyspace.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/test/csit/tests/music/music-suite/data/dropkeyspace.json
@@ -0,0 +1 @@
+{}
diff --git a/test/csit/tests/music/music-suite/data/droptable.json b/test/csit/tests/music/music-suite/data/droptable.json
new file mode 100644
index 0000000..71b4716
--- /dev/null
+++ b/test/csit/tests/music/music-suite/data/droptable.json
@@ -0,0 +1,12 @@
+{
+	"clusteringOrder":null,
+	"consistencyInfo":{"type":"eventual"},
+	"fields":{"PRIMARY KEY":"(name)",
+	"name":"text","job":"text","threadIndex":"int"},
+	"keyspaceName":null,
+	"primaryKey":null,
+	"properties":null,
+	"sortingKey":null,
+	"tableName":null
+}
+
diff --git a/test/csit/tests/music/music-suite/data/getrow_atomic.json b/test/csit/tests/music/music-suite/data/getrow_atomic.json
new file mode 100644
index 0000000..65f9d76
--- /dev/null
+++ b/test/csit/tests/music/music-suite/data/getrow_atomic.json
@@ -0,0 +1,3 @@
+{
+	"consistencyInfo": {"type":"atomic"}
+}
diff --git a/test/csit/tests/music/music-suite/data/insertrow_eventual.json b/test/csit/tests/music/music-suite/data/insertrow_eventual.json
new file mode 100644
index 0000000..56e1762
--- /dev/null
+++ b/test/csit/tests/music/music-suite/data/insertrow_eventual.json
@@ -0,0 +1,8 @@
+{
+   "consistencyInfo":   {"type":"eventual"},
+   "row_specification": null,
+   "timestamp": null,
+   "ttl": null,
+   "values":{"name":"emp1","job":"researcher1518791824160","threadIndex":"0"}
+}
+
diff --git a/test/csit/tests/music/music-suite/data/onboard.json b/test/csit/tests/music/music-suite/data/onboard.json
new file mode 100644
index 0000000..5c74f82
--- /dev/null
+++ b/test/csit/tests/music/music-suite/data/onboard.json
@@ -0,0 +1,6 @@
+{ 
+"appname": "lb7254",
+"userId": "music",
+"password": "music",
+"isAAF": "false" 
+}
diff --git a/test/csit/tests/music/music-suite/data/updaterow_atomic.json b/test/csit/tests/music/music-suite/data/updaterow_atomic.json
new file mode 100644
index 0000000..782da14
--- /dev/null
+++ b/test/csit/tests/music/music-suite/data/updaterow_atomic.json
@@ -0,0 +1,7 @@
+{
+     "consistencyInfo": {"type":"atomic"},
+     "row_specification":null,
+     "timestamp":null,
+     "ttl":null,
+     "values":{"job":"star-wars-actor"}
+}
diff --git a/test/csit/tests/music/music-suite/data/updaterow_eventual.json b/test/csit/tests/music/music-suite/data/updaterow_eventual.json
new file mode 100644
index 0000000..f8b3e9d
--- /dev/null
+++ b/test/csit/tests/music/music-suite/data/updaterow_eventual.json
@@ -0,0 +1,7 @@
+{
+	"consistencyInfo": {"type":"eventual"},
+     "row_specification":null,
+     "timestamp":null,
+     "ttl":null,
+     "values":{"job":"star-wars-actor"}
+}
diff --git a/test/csit/tests/music/music-suite/music-test.robot b/test/csit/tests/music/music-suite/music-test.robot
new file mode 100644
index 0000000..bb94d29
--- /dev/null
+++ b/test/csit/tests/music/music-suite/music-test.robot
@@ -0,0 +1,148 @@
+*** Settings ***
+Library       OperatingSystem
+Library       RequestsLibrary
+Library       json
+
+*** Variables ***
+${MESSAGE}    {"ping": "ok"}
+
+#global variables
+${generatedAID}
+
+*** Test Cases ***
+Get Music Version
+    [Documentation]    It sends a REST GET request to retrieve the Music.war version
+    Create Session   musicaas            ${MUSIC_HOSTNAME}:${MUSIC_PORT}
+    &{headers}=      Create Dictionary    Content-Type=application/json  Accept=application/json 
+    ${resp}=         Get Request        musicaas   /MUSIC/rest/v2/version     headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    200
+
+Music AddOnBoarding
+    [Documentation]    It sends a REST POST request to Music to Onboard a new application
+    Create Session   musicaas            ${MUSIC_HOSTNAME}:${MUSIC_PORT}
+    ${data}=         Get Binary File     ${CURDIR}${/}data${/}onboard.json
+    &{headers}=      Create Dictionary    ns=lb7254    userId=music    password=music   Content-Type=application/json  Accept=application/json 
+    ${resp}=         Post Request        musicaas   /MUSIC/rest/v2/admin/onboardAppWithMusic    data=${data}    headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    ${response_json}    json.loads    ${resp.content}
+    ${generatedAID}=    Convert To String      ${response_json['Generated AID']}
+    Set Global Variable     ${generatedAID}
+    Log To Console              generatedAID = ${generatedAID}
+    Should Be Equal As Integers    ${resp.status_code}    200
+
+Music CreateKeyspace
+    [Documentation]    It sends a REST POST request to Music to create a new keyspace in Cassandra
+    Create Session   musicaas            ${MUSIC_HOSTNAME}:${MUSIC_PORT}
+    ${data}=         Get Binary File     ${CURDIR}${/}data${/}createkeyspace.json
+    &{headers}=      Create Dictionary    ns=lb7254    userId=music    password=music   aid=${generatedAID}   Content-Type=application/json  Accept=application/json
+    ${resp}=         Post Request        musicaas   /MUSIC/rest/v2/keyspaces/MusicOnapKeyspace    data=${data}    headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    200
+
+Music CreateTable
+    [Documentation]    It sends a REST POST request to Music to create a new Table in Cassandra
+    Create Session   musicaas            ${MUSIC_HOSTNAME}:${MUSIC_PORT}
+    ${data}=         Get Binary File     ${CURDIR}${/}data${/}createtable.json
+    &{headers}=      Create Dictionary    ns=lb7254    userId=music    password=music   aid=${generatedAID}   Content-Type=application/json  Accept=application/json
+    ${resp}=         Post Request        musicaas   /MUSIC/rest/v2/keyspaces/MusicOnapKeyspace/tables/MusicOnapTable    data=${data}    headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    200
+
+Music InsertRow
+    [Documentation]    It sends a REST POST request to Music to create a new row in Cassandra
+    Create Session   musicaas            ${MUSIC_HOSTNAME}:${MUSIC_PORT}
+    ${data}=         Get Binary File     ${CURDIR}${/}data${/}insertrow_eventual.json
+    &{headers}=      Create Dictionary    ns=lb7254    userId=music    password=music   aid=${generatedAID}   Content-Type=application/json  Accept=application/json
+    ${resp}=         Post Request        musicaas   /MUSIC/rest/v2/keyspaces/MusicOnapKeyspace/tables/MusicOnapTable/rows/?row=emp1   data=${data}    headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    200
+
+Music ReadRowJustInserted
+    [Documentation]    It sends a REST GET request to Music to Read the row just inserted in Cassandra
+    Create Session   musicaas            ${MUSIC_HOSTNAME}:${MUSIC_PORT}
+    &{headers}=      Create Dictionary    ns=lb7254    userId=music    password=music   aid=${generatedAID}   Content-Type=application/json  Accept=application/json
+    ${resp}=         Get Request        musicaas   /MUSIC/rest/v2/keyspaces/MusicOnapKeyspace/tables/MusicOnapTable/rows?name=emp1   headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    200
+
+Music UpdateRowInAtomicWay
+    [Documentation]    It sends a REST PUT request to Music to create a new row in Cassandra
+    Create Session   musicaas            ${MUSIC_HOSTNAME}:${MUSIC_PORT}
+    ${data}=         Get Binary File     ${CURDIR}${/}data${/}updaterow_atomic.json
+    &{headers}=      Create Dictionary    ns=lb7254    userId=music    password=music   aid=${generatedAID}   Content-Type=application/json  Accept=application/json
+    ${resp}=         Put Request        musicaas   /MUSIC/rest/v2/keyspaces/MusicOnapKeyspace/tables/MusicOnapTable/rows?name=emp1   data=${data}    headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    200
+
+Music ReadRowAfterUpdate
+    [Documentation]    It sends a REST GET request to Music to Read the row just inserted in Cassandra
+    Create Session   musicaas            ${MUSIC_HOSTNAME}:${MUSIC_PORT}
+    &{headers}=      Create Dictionary    ns=lb7254    userId=music    password=music   aid=${generatedAID}   Content-Type=application/json  Accept=application/json
+    ${resp}=         Get Request        musicaas   /MUSIC/rest/v2/keyspaces/MusicOnapKeyspace/tables/MusicOnapTable/rows?name=emp1   headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    200
+
+Music DeleteRow
+    [Documentation]    It sends a REST DELETE request to Music to delete a row in Cassandra
+    Create Session   musicaas            ${MUSIC_HOSTNAME}:${MUSIC_PORT}
+    ${data}=         Get Binary File     ${CURDIR}${/}data${/}deleterow_eventual.json
+    &{headers}=      Create Dictionary    ns=lb7254    userId=music    password=music   aid=${generatedAID}   Content-Type=application/json  Accept=application/json
+    ${resp}=         Delete Request        musicaas   /MUSIC/rest/v2/keyspaces/MusicOnapKeyspace/tables/MusicOnapTable/rows?name=emp1   data=${data}    headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    200
+
+Music DropTable
+    [Documentation]    It sends a REST Delete request to Music to drop one existing Table in Cassandra
+    Create Session   musicaas            ${MUSIC_HOSTNAME}:${MUSIC_PORT}
+    ${data}=         Get Binary File     ${CURDIR}${/}data${/}droptable.json
+    &{headers}=      Create Dictionary    ns=lb7254    userId=music    password=music   aid=${generatedAID}   Content-Type=application/json   Accept=application/json
+    ${resp}=         Delete Request        musicaas   /MUSIC/rest/v2/keyspaces/MusicOnapKeyspace/tables/MusicOnapTable    data=${data}    headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    200
+
+Music DropKeyspace
+    [Documentation]    It sends a REST DELETE request to Music to drop one existing keyspace in Cassandra
+    Create Session   musicaas            ${MUSIC_HOSTNAME}:${MUSIC_PORT}
+    ${data}=         Get Binary File     ${CURDIR}${/}data${/}dropkeyspace.json
+    &{headers}=      Create Dictionary    ns=lb7254    userId=music    password=music   aid=${generatedAID}   Content-Type=application/json   Accept=application/json
+    ${resp}=         Delete Request        musicaas   /MUSIC/rest/v2/keyspaces/MusicOnapKeyspace    data=${data}    headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    200
+
+
+Music DeleteOnBoarding
+    [Documentation]    It sends a REST DELETE request to Music to remove a previosly onboarded application
+    Create Session   musicaas             ${MUSIC_HOSTNAME}:${MUSIC_PORT}
+    ${data}=         Get Binary File     ${CURDIR}${/}data${/}onboard.json
+    &{headers}=      Create Dictionary    ns=lb7254    userId=music    password=music   aid=${generatedAID}   Content-Type=application/json   Accept=application/json
+    ${resp}=         Delete Request        musicaas   /MUSIC/rest/v2/admin/onboardAppWithMusic    data=${data}    headers=${headers}
+    Log To Console              *********************
+    Log To Console              response = ${resp}
+    Log To Console              body = ${resp.text}
+    Should Be Equal As Integers    ${resp.status_code}    200
+
+*** Keywords ***
+