resourcepayload = '''
{
- any:
- [
- {%s}
- ]
+ %s
}
'''
+ae_payload = '''
+{
+ "m2m:ae":{%s}
+}
+'''
+
+con_payload = '''
+{
+ "m2m:cnt":{%s}
+}
+'''
+
+cin_payload = '''
+{
+ "m2m:cin":{%s}
+}
+'''
+
+sub_payload = '''
+{
+ "m2m:sub":{%s}
+}
+'''
+
+acp_payload = '''
+{
+ "m2m:acp":{%s}
+}
+'''
+
+nod_payload = '''
+{
+ "m2m:nod":{%s}
+}
+'''
+
+resources = {"m2m:ae", "m2m:cnt", "m2m:cin", "m2m:sub",
+ "m2m:acp", "m2m:nod", "m2m:grp"}
+
+payload_map = {1: acp_payload, 2: ae_payload, 3: con_payload,
+ 4: cin_payload, 14: nod_payload, 23: sub_payload}
+
def find_key(response, key):
"""Deserialize response, return value for key or None."""
- val = response.json()
- return val.get(key, None)
+ dic = response.json()
+ key1 = list(dic.keys())
+ if len(key1) != 1:
+ raise ValueError("The response should be json object")
+ if key1[0] not in resources:
+ raise ValueError("The resource is not recognized")
+ return dic.get(key1[0], None).get(key, None)
def name(response):
return None
-def normalize(resourceURI):
+def normalize(resource_uri):
"""Remove the first / of /InCSE1/ae1."""
- if resourceURI is not None:
- if resourceURI[0] == "/":
- return resourceURI[1:]
- return resourceURI
+ if resource_uri is not None:
+ if resource_uri[0] == "/":
+ return resource_uri[1:]
+ return resource_uri
class connect:
# Admittedly these are "magic values" but are required
# and until a proper defaulting initializer is in place
# are hard-coded.
- 'content-type': 'application/json',
+ 'content-type': 'application/vnd.onem2m-res+json',
'X-M2M-Origin': '//localhost:10000',
'X-M2M-RI': '12345',
'X-M2M-OT': 'NOW'
}
self.server = "%s://" % (protocol) + server
- if base is not None:
- self.url = self.server + op_provision
- self.response = self.session.post(
- self.url, data=self.payload, timeout=self.timeout)
- print(self.response.text)
-
- def create(self, parent, restype, attr=None, name=None):
- """Create resource."""
+ self.url = self.server + op_provision
+ self.response = self.session.post(
+ self.url, data=self.payload, timeout=self.timeout)
+
+ def modify_headers_origin(self, new_origin):
+ """Modify the headers to test ACP."""
+ self.headers['X-M2M-Origin'] = new_origin
+
+ def create(self, parent, restype, attr=None):
+ """Create certain resource with attributes under parent URI.
+
+ Args:
+ :param parent: the target URI
+ :param restype: the resourceType of the resource
+ :param attr: the payload of the resource
+ """
if parent is None:
return None
- payload = resourcepayload % (attr)
- print payload
- self.headers['X-M2M-NM'] = name
+ restype = int(restype)
+ payload = payload_map[restype]
+ payload = payload % (attr)
+ self.headers['content-type'] = 'application/\
+ vnd.onem2m-res+json;ty=%s' % (restype)
parent = normalize(parent)
- self.url = self.server + ":8282/%s?ty=%s&rcn=1" % (
- parent, restype)
+ self.url = self.server + ":8282/%s?&rcn=1" % (
+ parent)
self.response = self.session.post(
self.url, payload, timeout=self.timeout, headers=self.headers)
- return self.response
- def createWithCommand(self, parent, restype,
- command, attr=None, name=None):
- """Create resource."""
+ def create_with_command(self, parent, restype,
+ command, attr=None):
+ """Create certain resource with attributes under parent URI.
+
+ Args:
+ :param parent: the target URI
+ :param restype: the resourceType of the resource
+ :param command: the command would be in the URI after &
+ :param attr: the payload of the resource
+ """
if parent is None:
return None
- payload = resourcepayload % (attr)
- print payload
- if name is None:
- self.headers['X-M2M-NM'] = None
- else:
- self.headers['X-M2M-NM'] = name
+ restype = int(restype)
+ payload = payload_map[restype]
+ payload = payload % (attr)
+ self.headers['content-type'] = 'application/\
+ vnd.onem2m-res+json;ty=%s' % (restype)
parent = normalize(parent)
- self.url = self.server + ":8282/%s?ty=%s&%s" % (
- parent, restype, command)
+ self.url = self.server + ":8282/%s?%s" % (
+ parent, command)
self.response = self.session.post(
self.url, payload, timeout=self.timeout, headers=self.headers)
- return self.response
- def retrieve(self, resourceURI):
- """Retrieve resource."""
- if resourceURI is None:
+ def retrieve(self, resource_uri):
+ """Retrieve resource using resource_uri."""
+ if resource_uri is None:
return None
- resourceURI = normalize(resourceURI)
- self.url = self.server + ":8282/%s?rcn=5&drt=2" % (resourceURI)
+ resource_uri = normalize(resource_uri)
+ self.url = self.server + ":8282/%s?rcn=5" % (resource_uri)
self.headers['X-M2M-NM'] = None
+ self.headers['content-type'] = 'application/vnd.onem2m-res+json'
self.response = self.session.get(
self.url, timeout=self.timeout, headers=self.headers
)
- return self.response
- def retrieveWithCommand(self, resourceURI, command):
- """Retrieve resource with command."""
- if resourceURI is None:
+ def retrieve_with_command(self, resource_uri, command):
+ """Retrieve resource using resource_uri with command."""
+ if resource_uri is None:
return None
if command is None:
return None
- resourceURI = normalize(resourceURI)
- self.url = self.server + ":8282/%s?%s" % (resourceURI, command)
+ resource_uri = normalize(resource_uri)
+ self.url = self.server + ":8282/%s?%s" % (resource_uri, command)
self.headers['X-M2M-NM'] = None
+ self.headers['content-type'] = 'application/vnd.onem2m-res+json'
self.response = self.session.get(
self.url, timeout=self.timeout, headers=self.headers
)
- return self.response
- def update(self, resourceURI, restype, attr=None, name=None):
- """Update resource attr."""
- if resourceURI is None:
+ def update(self, resource_uri, restype, attr=None):
+ """Update resource at resource_uri with new attributes."""
+ if resource_uri is None:
return None
- resourceURI = normalize(resourceURI)
- # print(payload)
- payload = resourcepayload % (attr)
- print payload
- if name is None:
- self.headers['X-M2M-NM'] = None
- else:
- self.headers['X-M2M-NM'] = name
- self.url = self.server + ":8282/%s" % (resourceURI)
+ resource_uri = normalize(resource_uri)
+ restype = int(restype)
+ payload = payload_map[restype]
+ payload = payload % (attr)
+ self.headers['content-type'] = 'application/vnd.onem2m-res+json'
+ self.url = self.server + ":8282/%s" % (resource_uri)
self.response = self.session.put(
self.url, payload, timeout=self.timeout, headers=self.headers)
- return self.response
- def updateWithCommand(self, resourceURI, restype,
- command, attr=None, name=None):
- """Update resource attr."""
- if resourceURI is None:
+ def update_with_command(self, resource_uri, restype,
+ command, attr=None):
+ """Update resource at resource_uri with new attributes."""
+ if resource_uri is None:
return None
- resourceURI = normalize(resourceURI)
- # print(payload)
- payload = resourcepayload % (attr)
- print payload
- if name is None:
- self.headers['X-M2M-NM'] = None
- else:
- self.headers['X-M2M-NM'] = name
- self.url = self.server + ":8282/%s?%s" % (resourceURI, command)
+ resource_uri = normalize(resource_uri)
+ restype = int(restype)
+ payload = payload_map[restype]
+ payload = payload % (attr)
+ self.headers['content-type'] = 'application/vnd.onem2m-res+json'
+ self.url = self.server + ":8282/%s?%s" % (resource_uri, command)
self.response = self.session.put(
self.url, payload, timeout=self.timeout, headers=self.headers)
- return self.response
- def delete(self, resourceURI):
- """Delete the resource with the provresourceURIed resourceURI."""
- if resourceURI is None:
+ def delete(self, resource_uri):
+ """Delete the resource at the resource_uri."""
+ if resource_uri is None:
return None
- resourceURI = normalize(resourceURI)
- self.url = self.server + ":8282/%s" % (resourceURI)
+ resource_uri = normalize(resource_uri)
+ self.url = self.server + ":8282/%s" % (resource_uri)
self.headers['X-M2M-NM'] = None
+ self.headers['content-type'] = 'application/vnd.onem2m-res+json'
self.response = self.session.delete(self.url, timeout=self.timeout,
headers=self.headers)
- return self.response
- def deleteWithCommand(self, resourceURI, command):
- """Delete the resource with the provresourceURIed resourceURI."""
- if resourceURI is None:
+ def delete_with_command(self, resource_uri, command):
+ """Delete the resource at the resource_uri."""
+ if resource_uri is None:
return None
- resourceURI = normalize(resourceURI)
- self.url = self.server + ":8282/%s?%s" % (resourceURI, command)
+ resource_uri = normalize(resource_uri)
+ self.url = self.server + ":8282/%s?%s" % (resource_uri, command)
self.headers['X-M2M-NM'] = None
+ self.headers['content-type'] = 'application/vnd.onem2m-res+json'
self.response = self.session.delete(self.url, timeout=self.timeout,
headers=self.headers)
- return self.response
def tree(self):
"""Get the resource tree."""
self.url = self.server + op_tree
self.response = self.session.get(self.url)
- return self.response
def kill(self):
"""Kill the tree."""
self.url = self.server + op_cleanup
self.response = self.session.post(self.url)
- return self.response
user, password), protocol=prot)
-def create_resource(connection, parent, restype, attribute=None, name=None):
+def modify_headers_origin(connection, new_origin):
+ """Replace the headers origin with the neworigin to test ACP."""
+ connection.modify_headers_origin(new_origin)
+
+
+def create_resource(connection, parent, restype, attribute=None):
"""Create resource without command."""
- restype = int(restype)
- response = connection.create(parent, restype, attribute, name=name)
- Check_Response(response, "create")
- return response
+ connection.create(parent, restype, attribute)
+ check_response(connection.response, "create")
+ return connection.response
def create_resource_with_command(connection, parent, restype,
- command, attribute=None, name=None):
+ command, attribute=None):
"""According to command in the header, create the resource."""
- restype = int(restype)
- response = connection.createWithCommand(parent, restype,
- command, attribute, name=name)
- Check_Response(response, "create")
- return response
+ connection.create_with_command(parent, restype,
+ command, attribute)
+ check_response(connection.response, "create")
+ return connection.response
def create_subscription(connection, parent, ip, port):
"""Create subscription."""
uri = "http://%s:%d" % (ip, int(port))
- response = connection.create(parent, "subscription", {
+ connection.create(parent, "subscription", {
"notificationURI": uri,
"notificationContentType": "wholeResource"})
- Check_Response(response, "create")
- return response
+ check_response(connection.response, "create")
+ return connection.response
def retrieve_resource(connection, resid):
"""Retrieve resource according to resourceID."""
- response = connection.retrieve(resid)
- Check_Response(response, "retrieve")
- return response
+ connection.retrieve(resid)
+ check_response(connection.response, "retrieve")
+ return connection.response
def retrieve_resource_with_command(connection, resid, command):
"""According to command, retrieve source with the resourceID."""
- response = connection.retrieveWithCommand(resid, command)
- Check_Response(response, "retrieve")
- return response
+ connection.retrieve_with_command(resid, command)
+ check_response(connection.response, "retrieve")
+ return connection.response
-def update_resource(connection, resid, restype, attr, nm=None):
+def update_resource(connection, resid, restype, attr):
"""According to resourceID, update resource."""
- response = connection.update(resid, restype, attr, nm)
- Check_Response(response, "update")
- return response
+ connection.update(resid, restype, attr)
+ check_response(connection.response, "update")
+ return connection.response
def update_resource_with_command(connection, resid,
- restype, command, attr, nm=None):
+ restype, command, attr):
"""According to command, update resource with resourceID."""
- response = connection.updateWithCommand(resid, restype, command, attr, nm)
- Check_Response(response, "update")
- return response
+ connection.update_with_command(resid, restype, command, attr)
+ check_response(connection.response, "update")
+ return connection.response
def delete_resource(connection, resid):
"""According to resourceID, delete the resource."""
- response = connection.delete(resid)
- Check_Response(response, "delete")
- return response
+ connection.delete(resid)
+ check_response(connection.response, "delete")
+ return connection.response
def delete_resource_with_command(connection, resid, command):
"""According to command, delete the resource with resourceID."""
- response = connection.deleteWithCommand(resid, command)
- Check_Response(response, "delete")
- return response
+ connection.delete_with_command(resid, command)
+ check_response(connection.response, "delete")
+ return connection.response
def resid(response):
def name(response):
"""Return resourceName."""
- resourceName = ciotdm.name(response)
- if resourceName is None:
+ resource_name = ciotdm.name(response)
+ if resource_name is None:
raise AssertionError('Cannot find this resource')
- return resourceName
+ return resource_name
def text(response):
return response.text
-def lastModifiedTime(response):
+def last_modified_time(response):
"""Return resource lastModifiedTime."""
return ciotdm.lastModifiedTime(response)
return response.elapsed.total_seconds()
-def kill_the_tree(host, CSEID, username, password):
+def location(response):
+ """Return response content-location."""
+ return response.headers['Content-Location']
+
+
+def kill_the_tree(host, cseid, username, password):
"""Delete the whole tree."""
- connection = ciotdm.connect(host, base=CSEID,
+ connection = ciotdm.connect(host, base=cseid,
auth=(username, password), protocol="http")
connection.kill()
-def Check_Response(response, operation):
+def check_response(response, operation):
"""Check whether the connection is none."""
if response is None:
raise AssertionError('Cannot %s this resource') % (operation)
1.11 Valid Input for AE without name
[Documentation] Valid Input for AE without name
- ${attr} = Set Variable "aei":"ODL","api":"jb","apn":"jb2","or":"http://hey/you"
+ ${attr} = Set Variable "api":"jb","apn":"jb2","or":"http://hey/you","rr":true
${r} = Create Resource ${iserver} InCSE1 ${rt_ae} ${attr}
Response Is Correct ${r}
1.12 Valid Input for AE with name
- ${attr} = Set Variable "aei":"ODL","api":"jb","apn":"jb2","or":"http://hey/you"
- ${r} = Create Resource ${iserver} InCSE1 ${rt_ae} ${attr} ODL3
+ ${attr} = Set Variable "api":"jb","apn":"jb2","or":"http://hey/you","rr":true,"rn":"ODL3"
+ ${r} = Create Resource ${iserver} InCSE1 ${rt_ae} ${attr}
Response Is Correct ${r}
1.13 Invalid Input for AE with name Already Exist, should return error
[Documentation] Invalid Input for AE with name Already Exist, should return error
- ${attr} = Set Variable "aei":"ODL","api":"jb","apn":"jb2","or":"http://hey/you"
+ ${attr} = Set Variable "api":"jb","apn":"jb2","or":"http://hey/you","rr":true,"rn":"ODL3"
${error} = Run Keyword And Expect Error * Create Resource ${iserver} InCSE1 ${rt_ae}
- ... ${attr} ODL3
+ ... ${attr}
Should Start with ${error} Cannot create this resource [409]
1.14 Invalid Input for AE (AE cannot be created under AE)
[Documentation] Invalid Input for AE (AE cannot be created under AE), expect error
- ${attr} = Set Variable "aei":"ODL","api":"jb","apn":"jb2","or":"http://hey/you"
+ ${attr} = Set Variable "api":"jb","apn":"jb2","or":"http://hey/you","rr":true,"rn":"ODL4"
${error} = Run Keyword And Expect Error * Create Resource ${iserver} InCSE1/ODL3 ${rt_ae}
- ... ${attr} ODL4
+ ... ${attr}
Should Start with ${error} Cannot create this resource [405]
# ----------------- Update and Retrieve -------------
1.15 Valid Update AE's label
[Documentation] Valid Update AE's label
${attr} = Set Variable "lbl":["aaa","bbb","ccc"]
- ${r} = Update Resource ${iserver} InCSE1/ODL3 2 ${attr}
- ${ae} = Name ${r}
+ ${r} = Update Resource ${iserver} InCSE1/ODL3 ${rt_ae} ${attr}
Response Is Correct ${r}
# Retrieve and test the lbl
- ${r} = Retrieve Resource ${iserver} ${ae}
+ ${r} = Retrieve Resource ${iserver} InCSE1/ODL3
${Json} = Text ${r}
Should Contain ${Json} "aaa" "bbb" "ccc"
- Should Contain ${r.json()['lbl']} aaa bbb ccc
+ Should Contain ${r.json()['m2m:ae']['lbl']} aaa bbb ccc
#==================================================
# Container Test
#==================================================
2.12 Create Container under AE with name
[Documentation] Invalid Input for Container Under AE with name (Already exist)
- ${attr} = Set Variable "cr":null,"mni":1,"mbs":15,"or":"http://hey/you"
- ${r} = Create Resource ${iserver} InCSE1/ODL3 ${rt_container} ${attr} containerUnderAE
- ${container} = Name ${r}
+ ${attr} = Set Variable "cr":null,"mni":1,"mbs":15,"or":"http://hey/you","rn":"containerUnderAE"
+ ${r} = Create Resource ${iserver} InCSE1/ODL3 ${rt_container} ${attr}
+ ${container} = Location ${r}
Response Is Correct ${r}
# retrieve it
${result} = Retrieve Resource ${iserver} ${container}
${text} = Text ${result}
- Should Contain ${text} "containerUnderAE"
+ Should Contain ${text} containerUnderAE
2.13 Invalid Input for Container Under AE with name (Already exist)
[Documentation] Invalid Input for Container Under AE with name (Already exist)
- ${attr} = Set Variable "cr":null,"mni":1,"mbs":15,"or":"http://hey/you"
+ ${attr} = Set Variable "cr":null,"mni":1,"mbs":15,"or":"http://hey/you","rn":"containerUnderAE"
${error} = Run Keyword And Expect Error * Connect And Create Resource InCSE1/ODL3 ${rt_container} ${attr}
- ... containerUnderAE
Should Start with ${error} Cannot create this resource [409]
2.14 Update Container Label
[Documentation] Update Label to ["aaa","bbb","ccc"]
${attr} = Set Variable "lbl":["aaa","bbb","ccc"]
${r} = Update Resource ${iserver} InCSE1/ODL3/containerUnderAE ${rt_container} ${attr}
- ${container} = Name ${r}
Response Is Correct ${r}
# Retrieve and test the lbl
- ${r} = Retrieve Resource ${iserver} ${container}
+ ${r} = Retrieve Resource ${iserver} InCSE1/ODL3/containerUnderAE
${Json} = Text ${r}
Should Contain ${Json} "aaa" "bbb" "ccc"
- Should Contain ${r.json()['lbl']} aaa bbb ccc
+ Should Contain ${r.json()['m2m:cnt']['lbl']} aaa bbb ccc
#----------------------------------------------------------------------
2.21 Create Container under InCSE1 without name
2.22 Create Container under CSE with name
[Documentation] Create Container under CSE with name
- ${attr} = Set Variable "cr":null,"mni":1,"mbs":15,"or":"http://hey/you"
- ${r} = Create Resource ${iserver} InCSE1 ${rt_container} ${attr} containerUnderCSE
+ ${attr} = Set Variable "cr":null,"mni":1,"mbs":15,"or":"http://hey/you","rn":"containerUnderCSE"
+ ${r} = Create Resource ${iserver} InCSE1 ${rt_container} ${attr}
Response Is Correct ${r}
# retrieve it
${result} = Retrieve Resource ${iserver} InCSE1/containerUnderCSE
${text} = Text ${result}
- Should Contain ${text} "contaienrUnderCSE"
+ Should Contain ${text} containerUnderCSE
2.23 Invalid Input for Container Under CSE with name (Already exist)
[Documentation] Invalid Input for Container Under CSE with name (Already exist)
- ${attr} = Set Variable "cr":null,"mni":1,"mbs":15,"or":"http://hey/you"
+ ${attr} = Set Variable "cr":null,"mni":1,"mbs":15,"or":"http://hey/you","rn":"containerUnderCSE"
${error} = Run Keyword And Expect Error * Create Resource ${iserver} InCSE1 ${rt_container}
- ... ${attr} containerUnderCSE
+ ... ${attr}
Should Start with ${error} Cannot create this resource [409]
2.24 Update Container Label
[Documentation] Update Container Label
${attr} = Set Variable "lbl":["aaa","bbb","ccc"]
${r} = Update Resource ${iserver} InCSE1/containerUnderCSE ${rt_container} ${attr}
- ${container} = Name ${r}
Response Is Correct ${r}
# Retrieve and test the lbl
- ${r} = Retrieve Resource ${iserver} ${container}
+ ${r} = Retrieve Resource ${iserver} InCSE1/containerUnderCSE
${Json} = Text ${r}
Should Contain ${Json} "aaa" "bbb" "ccc"
- Should Contain ${r.json()['lbl']} aaa bbb ccc
+ Should Contain ${r.json()['m2m:cnt']['lbl']} aaa bbb ccc
#----------------------------------------------------------------------
2.31 Create Container under Container without name
2.32 Create Container under Container with name
[Documentation] Create Container under Container with name
- ${attr} = Set Variable "cr":null,"mni":1,"mbs":15,"or":"http://hey/you"
- ${r} = Create Resource ${iserver} InCSE1/containerUnderCSE ${rt_container} ${attr} containerUnderContainer
- ${container} = Name ${r}
+ ${attr} = Set Variable "cr":null,"mni":1,"mbs":15,"or":"http://hey/you","rn":"containerUnderContainer"
+ ${r} = Create Resource ${iserver} InCSE1/containerUnderCSE ${rt_container} ${attr}
+ ${container} = Location ${r}
Response Is Correct ${r}
# retrieve it
${result} = Retrieve Resource ${iserver} ${container}
${text} = Text ${result}
- Should Contain ${text} "containerUnderContainer"
+ Should Contain ${text} containerUnderContainer
2.33 Invalid Input for Container Under Container with name (Already exist)
[Documentation] Invalid Input for Container Under Container with name (Already exist)
- ${attr} = Set Variable "cr":null,"mni":1,"mbs":15,"or":"http://hey/you"
+ ${attr} = Set Variable "cr":null,"mni":1,"mbs":15,"or":"http://hey/you","rn":"containerUnderContainer"
${error} = Run Keyword And Expect Error * Create Resource ${iserver} InCSE1/containerUnderCSE ${rt_container}
- ... ${attr} containerUnderContainer
+ ... ${attr}
Should Start with ${error} Cannot create this resource [409]
2.34 Update Container Label
${r} = Retrieve Resource ${iserver} InCSE1/containerUnderCSE/containerUnderContainer
${Json} = Text ${r}
Should Contain ${Json} "aaa" "bbb" "ccc"
- Should Contain ${r.json()['lbl']} aaa bbb ccc
+ Should Contain ${r.json()['m2m:cnt']['lbl']} aaa bbb ccc
-2.41 Invalid Input for AE under container withoutname(mess up layer)
+2.41 Invalid Input for AE under container with name(mess up layer)
[Documentation] Invalid Input for AE under container withoutname(mess up layer)
- ${attr} = Set Variable "aei":"ODL","api":"jb","apn":"jb2","or":"http://hey/you"
+ ${attr} = Set Variable "api":"jb","apn":"jb2","or":"http://hey/you","rr":true,"rn":"ODL4"
${error} = Run Keyword And Expect Error * Create Resource ${iserver} InCSE1/containerUnderCSE ${rt_ae}
- ... ${attr} ODL4
+ ... ${attr}
Should Start with ${error} Cannot create this resource [405]
Should Contain ${error} Cannot create AE under this resource type: 3
#==================================================
3.12 Valid contentInstance under CSEBase/container with name
[Documentation] Valid contentInstance under CSEBase/container with name
- ${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"102"
- ${r} = Create Resource ${iserver} InCSE1/containerUnderCSE ${rt_contentInstance} ${attr} conIn1
+ ${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"102","rn":"conIn1"
+ ${r} = Create Resource ${iserver} InCSE1/containerUnderCSE ${rt_contentInstance} ${attr}
Response Is Correct ${r}
3.13 Invalid contentInstance under CSEBase
3.16 Invalid AE under contentInstance
[Documentation] Invalid AE under contentInstance
- ${attr} = Set Variable "aei":"ODL","api":"jb","apn":"jb2","or":"http://hey/you"
+ ${attr} = Set Variable "api":"jb","apn":"jb2","or":"http://hey/you","rr":true
${error} = Run Keyword And Expect Error * Create Resource ${iserver} InCSE1/containerUnderCSE/conIn1 ${rt_ae}
... ${attr}
Should Start with ${error} Cannot create this resource [405]
4.11 Delete AE without child resource
[Documentation] Delete AE without child resource
- ${attr} = Set Variable "aei":"ODL","api":"jb","apn":"jb2","or":"http://hey/you"
+ ${attr} = Set Variable "api":"jb","apn":"jb2","or":"http://hey/you","rr":true
${r} = Create Resource ${iserver} InCSE1 ${rt_ae} ${attr}
- ${ae} = Name ${r}
+ ${ae} = Location ${r}
Response Is Correct ${r}
${deleteRes} = Delete Resource ${iserver} ${ae}
${status_code} = Status Code ${deleteRes}
[Documentation] Delete Container without child resource
${attr} = Set Variable "cr":null,"mni":1,"mbs":15,"or":"http://hey/you"
${r} = Create Resource ${iserver} InCSE1/ODL3 ${rt_container} ${attr}
- ${container} = Name ${r}
+ ${container} = Location ${r}
Response Is Correct ${r}
${deleteRes} = Delete Resource ${iserver} ${container}
${status_code} = Status Code ${deleteRes}
*** Keywords ***
Connect And Create Resource
- [Arguments] ${targetURI} ${resoutceType} ${attr} ${resourceName}=${EMPTY}
+ [Arguments] ${targetURI} ${resoutceType} ${attr}
${iserver} = Connect To Iotdm ${httphost} ${httpuser} ${httppass} http
- ${r} = Create Resource ${iserver} ${targetURI} ${resoutceType} ${attr} ${resourceName}
- ${container} = Name ${r}
+ ${r} = Create Resource ${iserver} ${targetURI} ${resoutceType} ${attr}
+ ${container} = Resid ${r}
${status_code} = Status Code ${r}
Should Be Equal As Integers ${status_code} 201
#==================================================
# For Creation, there are only 2 mandatory attribute: App-ID(api), AE-ID(aei)
-1.11 Missing App-ID should return error
+1.11 If include AE-ID should return error
[Documentation] when create AE, Missing App-ID should return error
${attr} = Set Variable "aei":"ODL"
${error} = Run Keyword And Expect Error * Create Resource ${iserver} InCSE1 ${rt_ae}
... ${attr}
Should Start with ${error} Cannot create this resource [400]
- Should Contain ${error} APP_ID missing parameter
+ Should Contain ${error} AE_ID
-1.21 Missing AE-ID should return error
+1.21 Missing App-ID should return error
[Documentation] when creete AE, Missing AE-ID should return error
- ${attr} = Set Variable "api":"ODL"
+ ${attr} = Set Variable "apn":"ODL"
${error} = Run Keyword And Expect Error * Create Resource ${iserver} InCSE1 ${rt_ae}
... ${attr}
Should Start with ${error} Cannot create this resource [400]
- Should Contain ${error} AE_ID missing parameter
+ Should Contain ${error} APP_ID
1.3 After Created, test whether all the mandatory attribtues are exist.
[Documentation] mandatory attributes should be there after created
- ${attr} = Set Variable "api":"ODL","aei":"ODL"
- ${r}= Create Resource ${iserver} InCSE1 ${rt_ae} ${attr} AE1
+ ${attr} = Set Variable "api":"ODL","rr":true,"rn":"AE1"
+ ${r}= Create Resource ${iserver} InCSE1 ${rt_ae} ${attr}
${status_code} = Status Code ${r}
Should Be Equal As Integers ${status_code} 201
${text} = Text ${r}
Should Contain ${text} "ri": "rn": "api":"ODL"
- Should Contain ${text} "aei":"ODL" "lt": "pi":
+ Should Contain ${text} "aei": "lt": "pi":
Should Contain ${text} "ct": "rty":2
Should Not Contain S{text} "lbl" "apn" "or"
# 1.13 if Child Container updated, parent Last Modified time will be updated?
3.11 Mulitiple App-ID should return error
[Documentation] Mulitiple App-ID should return error
- ${attr} = Set Variable "aei":"ODL","api":"ODL","api":"ODL2"
+ ${attr} = Set Variable "api":"ODL","api":"ODL2"
${error} = Cannot Update AE Error ${attr}
Should Contain ${error} Duplicate key api
3.12 Mulitiple AE-ID should return error
[Documentation] Mulitiple AE-ID should return error
- ${attr} = Set Variable "aei":"ODL","api":"ODL","aei":"ODL1"
+ ${attr} = Set Variable "api":"ODL","aei":"ODL1"
${error} = Cannot Update AE Error ${attr}
- Should Contain ${error} Duplicate key aei
3.13 Multiple app-name should return error
[Documentation] Multiple app-name should return error
- ${attr} = Set Variable "aei":"ODL","api":"ODL","apn":"ODL1","apn":"ODL1"
+ ${attr} = Set Variable "api":"ODL","apn":"ODL1","apn":"ODL1"
${error} = Cannot Update AE Error ${attr}
Should Contain ${error} Duplicate key apn
3.14 Multiple label attribute should return error(multiple array)
[Documentation] Multiple label attribute should return error(multiple array)
- ${attr} = Set Variable "aei":"ODL","api":"ODL","lbl":["ODL1"], "lbl":["dsdsd"]
+ ${attr} = Set Variable "api":"ODL","lbl":["ODL1"], "lbl":["dsdsd"]
${error} = Cannot Update AE Error ${attr}
Should Contain ${error} Duplicate key lbl
3.15 Multiple ontologyRef attribute should return error
[Documentation] Multiple ontologyRef attribute should return error
- ${attr} = Set Variable "aei":"ODL","api":"ODL","or":"http://hey/you", "or":"http://hey/you"
+ ${attr} = Set Variable "api":"ODL","or":"http://hey/you", "or":"http://hey/you"
${error} = Cannot Update AE Error ${attr}
Should Contain ${error} Duplicate key or
4.1 if updated seccessfully, lastModifiedTime must be modified.
[Documentation] if updated seccessfully, lastModifiedTime must be modified.
${oldr} = Retrieve Resource ${iserver} InCSE1/AE1
- ${text} = Text ${oldr}
- LOG ${text}
${lt1} = LastModifiedTime ${oldr}
${attr} = Set Variable "lbl":["aaa"]
Sleep 1s
# But as lastModifiedTime has precision in seconds,
# we need to wait 1 second to see different value on update.
${r} = update Resource ${iserver} InCSE1/AE1 ${rt_ae} ${attr}
- ${text} = Text ${r}
- LOG ${text}
${lt2} = LastModifiedTime ${r}
- Should Not Be Equal ${oldr.json()['lt']} ${lt2}
+ Should Not Be Equal ${lt1} ${lt2}
4.2 Check parentID
[Documentation] check parentID whether it is correct
${oldr} = Retrieve Resource ${iserver} InCSE1
- ${CSEID} = Set Variable ${oldr.json()['ri']}
+ ${CSEID} = Set Variable ${oldr.json()['m2m:cb']['ri']}
${r} = Retrieve Resource ${iserver} InCSE1/AE1
- Should Be Equal ${oldr.json()['ri']} ${r.json()['pi']}
+ Should Be Equal /InCSE1/${oldr.json()['m2m:cb']['ri']} ${r.json()['m2m:ae']['pi']}
#==================================================
# Finish
#==================================================
1.1 After Created, test whether all the mandatory attribtues are exist.
[Documentation] After Created, test whether all the mandatory attribtues are exist.
- ${attr} = Set Variable
- ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr} Container1
- ${container} = Name ${r}
+ ${attr} = Set Variable "rn":"Container1"
+ ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr}
+ ${container} = Location ${r}
${status_code} = Status Code ${r}
Should Be Equal As Integers ${status_code} 201
${text} = Text ${r}
Should Contain ${text} "ri": "rn": "cni"
Should Contain ${text} "lt": "pi": "st":
- Should Contain ${text} "ct": "rty":3 "cbs"
+ Should Contain ${text} "ct": "ty":3 "cbs"
Should Not Contain S{text} "lbl" "creator" "or"
+
+
#==================================================
# Container Optional Attribute Test (Allowed)
#==================================================
2.11 maxNumberofInstance (mni) can be added when create
[Documentation] maxNumberofInstance (mni) can be added when create
- ${attr} = Set Variable "mni":3
- ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr} Container2
+ ${attr} = Set Variable "mni":3,"rn":"Container2"
+ ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr}
${text} = Check Response and Retrieve Resource ${r}
Should Contain ${text} "mni"
[Documentation] maxNumberofInstance (mni) can be added through update (0-1)
${attr} = Set Variable "mni":3
${r} = update Resource ${iserver} InCSE1/Container1 ${rt_container} ${attr}
- ${text} = Check Response and Retrieve Resource ${r}
+ ${text} = Check Response and Retrieve Resource For Update ${r} InCSE1/Container1
Should Contain ${text} "mni"
2.13 maxNumberofInstance (mni) can be modified through update (1-1)
[Documentation] maxNumberofInstance (mni) can be modified through update (1-1)
${attr} = Set Variable "mni":5
${r} = update Resource ${iserver} InCSE1/Container1 ${rt_container} ${attr}
- ${text} = Check Response and Retrieve Resource ${r}
+ ${text} = Check Response and Retrieve Resource For Update ${r} InCSE1/Container1
Should Contain ${text} "mni":5
Should Not Contain ${text} "mni":3
[Documentation] if set to null, maxnumberofInstance (mni) can be deleted through delete(1-0)
${attr} = Set Variable "mni":null
${r} = update Resource ${iserver} InCSE1/Container1 ${rt_container} ${attr}
- ${text} = Check Response and Retrieve Resource ${r}
+ ${text} = Check Response and Retrieve Resource For Update ${r} InCSE1/Container1
Should Not Contain ${text} "mni"
2.21 maxByteSize (mbs) can be added when create
[Documentation] maxByteSize (mbs) can be added when create
- ${attr} = Set Variable "mbs":20
- ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr} Container2
+ ${attr} = Set Variable "mbs":20,"rn":"Container2"
+ ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr}
${text} = Check Response and Retrieve Resource ${r}
Should Contain ${text} "mbs"
[Documentation] maxByteSize (mbs) can be added through update (0-1)
${attr} = Set Variable "mbs":20
${r} = update Resource ${iserver} InCSE1/Container1 ${rt_container} ${attr}
- ${text} = Check Response and Retrieve Resource ${r}
+ ${text} = Check Response and Retrieve Resource For Update ${r} InCSE1/Container1
Should Contain ${text} "mbs"
2.23 maxByteSize (mbs) can be modified through update (1-1)
[Documentation] maxByteSize (mbs) can be modified through update (1-1)
${attr} = Set Variable "mbs":25
${r} = update Resource ${iserver} InCSE1/Container1 ${rt_container} ${attr}
- ${text} = Check Response and Retrieve Resource ${r}
+ ${text} = Check Response and Retrieve Resource For Update ${r} InCSE1/Container1
Should Contain ${text} "mbs":25
Should Not Contain ${text} "mbs":20
[Documentation] if set to null, maxByteSize (mbs) can be deleted through delete(1-0)
${attr} = Set Variable "mbs":null
${r} = update Resource ${iserver} InCSE1/Container1 ${rt_container} ${attr}
- ${text} = Check Response and Retrieve Resource ${r}
+ ${text} = Check Response and Retrieve Resource For Update ${r} InCSE1/Container1
Should Not Contain ${text} "mbs"
2.31 ontologyRef(or) can be added when create
[Documentation] ontologyRef(or) can be added when create
- ${attr} = Set Variable "or":"http://cisco.com"
- ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr} Container2
- ${text} = Check Response and Retrieve Resource ${r}
+ ${attr} = Set Variable "or":"http://cisco.com","rn":"Container2"
+ ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr}
+ ${text} = Check Response and Retrieve Resource For Update ${r} InCSE1/Container2
Should Contain ${text} "or"
Delete the Container2-2.3
[Documentation] ontologyRef(or) can be added through update (0-1)
${attr} = Set Variable "or":"http://cisco.com"
${r} = update Resource ${iserver} InCSE1/Container1 ${rt_container} ${attr}
- ${text} = Check Response and Retrieve Resource ${r}
+ ${text} = Check Response and Retrieve Resource For Update ${r} InCSE1/Container1
Should Contain ${text} "or"
2.33 ontologyRef(or) can be modified through update (1-1)
[Documentation] ontologyRef(or) can be modified through update (1-1)
${attr} = Set Variable "or":"http://iotdm.com"
${r} = update Resource ${iserver} InCSE1/Container1 ${rt_container} ${attr}
- ${text} = Check Response and Retrieve Resource ${r}
+ ${text} = Check Response and Retrieve Resource For Update ${r} InCSE1/Container1
Should Contain ${text} "or":"http://iotdm.com"
Should Not Contain ${text} "or":"http://cisco.com"
[Documentation] if set to null, ontologyRef(or) can be deleted through delete(1-0)
${attr} = Set Variable "or":null
${r} = update Resource ${iserver} InCSE1/Container1 ${rt_container} ${attr}
- ${text} = Check Response and Retrieve Resource ${r}
+ ${text} = Check Response and Retrieve Resource For Update ${r} InCSE1/Container1
Should Not Contain ${text} "or"
2.41 labels can be created through update (0-1)
[Documentation] labels can be created through update (0-1)
${attr} = Set Variable "lbl":["label1"]
${r} = update Resource ${iserver} InCSE1/Container1 ${rt_container} ${attr}
- ${text} = Check Response and Retrieve Resource ${r}
+ ${text} = Check Response and Retrieve Resource For Update ${r} InCSE1/Container1
Should Contain ${text} lbl label1
2.42 labels can be modified (1-1)
[Documentation] labels can be modified (1-1)
${attr} = Set Variable "lbl":["label2"]
${r} = update Resource ${iserver} InCSE1/Container1 ${rt_container} ${attr}
- ${text} = Check Response and Retrieve Resource ${r}
+ ${text} = Check Response and Retrieve Resource For Update ${r} InCSE1/Container1
Should Not Contain ${text} label1
Should Contain ${text} lbl label2
[Documentation] if set to null, labels should be deleted(1-0)
${attr} = Set Variable "lbl":null
${r} = update Resource ${iserver} InCSE1/Container1 ${rt_container} ${attr}
- ${text} = Check Response and Retrieve Resource ${r}
+ ${text} = Check Response and Retrieve Resource For Update ${r} InCSE1/Container1
Should Not Contain ${text} lbl label1 label2
2.44 labels can be created through update (0-n)
[Documentation] labels can be created through update (0-n)
${attr} = Set Variable "lbl":["label3","label4","label5"]
${r} = update Resource ${iserver} InCSE1/Container1 ${rt_container} ${attr}
- ${text} = Check Response and Retrieve Resource ${r}
+ ${text} = Check Response and Retrieve Resource For Update ${r} InCSE1/Container1
Should Contain ${text} lbl label3 label4
Should Contain ${text} label5
[Documentation] labels can be modified (n-n)(across)
${attr} = Set Variable "lbl":["label4","label5","label6"]
${r} = update Resource ${iserver} InCSE1/Container1 ${rt_container} ${attr}
- ${text} = Check Response and Retrieve Resource ${r}
+ ${text} = Check Response and Retrieve Resource For Update ${r} InCSE1/Container1
Should Not Contain ${text} label1 label2 label3
Should Contain ${text} lbl label4 label5
Should Contain ${text} label6
[Documentation] labels can be modified (n-n)(not across)
${attr} = Set Variable "lbl":["label7","label8","label9"]
${r} = update Resource ${iserver} InCSE1/Container1 ${rt_container} ${attr}
- ${text} = Check Response and Retrieve Resource ${r}
+ ${text} = Check Response and Retrieve Resource For Update ${r} InCSE1/Container1
Should Not Contain ${text} label1 label2 label3
Should Not Contain ${text} label6 label4 label5
Should Contain ${text} lbl label7 label8
[Documentation] if set to null, labels should be deleted(n-0)
${attr} = Set Variable "lbl":null
${r} = update Resource ${iserver} InCSE1/Container1 ${rt_container} ${attr}
- ${text} = Check Response and Retrieve Resource ${r}
+ ${text} = Check Response and Retrieve Resource For Update ${r} InCSE1/Container1
Should Not Contain ${text} label1 label2 label3
Should Not Contain ${text} label6 label4 label5
Should Not Contain ${text} label7 label8 label9
4.11 if updated seccessfully, lastModifiedTime must be modified.
[Documentation] if updated seccessfully, lastModifiedTime must be modified.
${oldr} = Retrieve Resource ${iserver} InCSE1/Container1
- ${text} = Text ${oldr}
- LOG ${text}
${lt1} = LastModifiedTime ${oldr}
${attr} = Set Variable "lbl":["aaa"]
Sleep 1s
# we need to wait 1 second to see different value on update.
${r} = update Resource ${iserver} InCSE1/Container1 ${rt_container} ${attr}
${lt2} = LastModifiedTime ${r}
- Should Not Be Equal ${oldr.json()['lt']} ${lt2}
+ Should Not Be Equal ${oldr.json()['m2m:cnt']['lt']} ${lt2}
4.12 childResources create , parent's lastmodifiedTime update
[Documentation] childResources create , parent's lastmodifiedTime update
${oldr} = Retrieve Resource ${iserver} InCSE1/Container1
- ${text} = Text ${oldr}
- LOG ${text}
${lt1} = LastModifiedTime ${oldr}
Sleep 1s
# We know Beryllium is going to be get rid of all sleep.
# But as lastModifiedTime has precision in seconds,
# we need to wait 1 second to see different value on update.
- ${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"102"
- ${r} = Create Resource ${iserver} InCSE1/Container1 ${rt_contentInstance} ${attr} conIn1
+ ${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"102","rn":"conIn1"
+ ${r} = Create Resource ${iserver} InCSE1/Container1 ${rt_contentInstance} ${attr}
${lt2} = LastModifiedTime ${r}
- Should Not Be Equal ${oldr.json()['lt']} ${lt2}
+ Should Not Be Equal ${oldr.json()['m2m:cnt']['lt']} ${lt2}
#-------------- 2 parentID ------------
4.21 Check parentID(cse-container)
[Documentation] parentID should be InCSE1
${oldr} = Retrieve Resource ${iserver} InCSE1
- ${CSEID} = Set Variable ${oldr.json()['ri']}
+ ${CSEID} = Set Variable ${oldr.json()['m2m:cb']['ri']}
${r} = Retrieve Resource ${iserver} InCSE1/Container1
- Should Be Equal ${oldr.json()['ri']} ${r.json()['pi']}
+ Should Be Equal /InCSE1/${oldr.json()['m2m:cb']['ri']} ${r.json()['m2m:cnt']['pi']}
4.22 Check parentID(cse-container-container)
[Documentation] parentID should be correct
# CSE
# |--Contianer1
# |--Container2
- ${attr} = Set Variable
- ${r}= Create Resource ${iserver} InCSE1/Container1 ${rt_container} ${attr} Container2
- ${container} = Name ${r}
+ ${attr} = Set Variable "rn":"Container2"
+ ${r}= Create Resource ${iserver} InCSE1/Container1 ${rt_container} ${attr}
${status_code} = Status Code ${r}
${oldr} = Retrieve Resource ${iserver} InCSE1/Container1
- ${CSEID} = Set Variable ${oldr.json()['ri']}
+ ${CSEID} = Set Variable ${oldr.json()['m2m:cnt']['ri']}
${r} = Retrieve Resource ${iserver} InCSE1/Container1/Container2
- Should Be Equal ${oldr.json()['ri']} ${r.json()['pi']}
+ Should Be Equal /InCSE1/${oldr.json()['m2m:cnt']['ri']} ${r.json()['m2m:cnt']['pi']}
4.23 Check parentID(cse-AE-container)
[Documentation] parentID should be correct
# CSE
# |--AE1
# |--Container2
- ${attr} = Set Variable "api":"ODL","aei":"ODL"
- ${r}= Create Resource ${iserver} InCSE1 ${rt_ae} ${attr} AE1
- ${attr} = Set Variable
- ${r}= Create Resource ${iserver} InCSE1/AE1 ${rt_container} ${attr} Container2
- ${container} = Name ${r}
+ ${attr} = Set Variable "api":"ODL","apn":"ODL","rr":true,"rn":"AE1"
+ ${r}= Create Resource ${iserver} InCSE1 ${rt_ae} ${attr}
+ ${attr} = Set Variable "rn":"Container2"
+ ${r}= Create Resource ${iserver} InCSE1/AE1 ${rt_container} ${attr}
${status_code} = Status Code ${r}
${oldr} = Retrieve Resource ${iserver} InCSE1/AE1
- ${CSEID} = Set Variable ${oldr.json()['ri']}
+ ${CSEID} = Set Variable ${oldr.json()['m2m:ae']['ri']}
${r} = Retrieve Resource ${iserver} InCSE1/AE1/Container2
- Should Be Equal ${oldr.json()['ri']} ${r.json()['pi']}
+ Should Be Equal /InCSE1/${oldr.json()['m2m:ae']['ri']} ${r.json()['m2m:cnt']['pi']}
4.24 Check parentID(cse-AE-container-container)
[Documentation] parentID should be correct
# |--AE1
# |--Container2
# |--- Container3
- ${attr} = Set Variable
- ${r}= Create Resource ${iserver} InCSE1/AE1/Container2 ${rt_container} ${attr} Container3
- ${container} = Name ${r}
+ ${attr} = Set Variable "rn":"Container3"
+ ${r}= Create Resource ${iserver} InCSE1/AE1/Container2 ${rt_container} ${attr}
${status_code} = Status Code ${r}
${oldr} = Retrieve Resource ${iserver} InCSE1/AE1/Container2
- ${CSEID} = Set Variable ${oldr.json()['ri']}
+ ${CSEID} = Set Variable ${oldr.json()['m2m:cnt']['ri']}
${r} = Retrieve Resource ${iserver} InCSE1/AE1/Container2/Container3
- Should Be Equal ${oldr.json()['ri']} ${r.json()['pi']}
+ Should Be Equal /InCSE1/${oldr.json()['m2m:cnt']['ri']} ${r.json()['m2m:cnt']['pi']}
Delete the test AE-4.2
${deleteRes} = Delete Resource ${iserver} InCSE1/AE1
[Documentation] when create, st should be 0
# CSE
# |--Container2
- ${attr} = Set Variable
- ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr} Container2
- ${container} = Name ${r}
+ ${attr} = Set Variable "rn":"Container2"
+ ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr}
+ ${container} = Location ${r}
${status_code} = Status Code ${r}
- ${oldr} = Retrieve Resource ${iserver} InCSE1/Container2
- ${st} = Set Variable ${oldr.json()['st']}
+ ${oldr} = Retrieve Resource ${iserver} ${container}
+ ${st} = Set Variable ${oldr.json()['m2m:cnt']['st']}
Should Be Equal As Integers 0 ${st}
# 4.32 stateTag (when update expirationTime)
# 4.33 stateTag (when update accessControlPolicyIDs)
4.34 stateTag (when update labels) + lastModifiedTime
[Documentation] st and lt should be changed
${oldr} = Retrieve Resource ${iserver} InCSE1/Container2
- ${oldst} = Set Variable ${oldr.json()['st']}
+ ${oldst} = Set Variable ${oldr.json()['m2m:cnt']['st']}
${attr} = Set Variable "lbl":["label1"]
Sleep 1s
# We know Beryllium is going to be get rid of all sleep.
# we need to wait 1 second to see different value on update.
Update Resource ${iserver} InCSE1/Container2 ${rt_container} ${attr}
${r} = Retrieve Resource ${iserver} InCSE1/Container2
- Should Be Equal As Integers ${oldst+1} ${r.json()['st']}
- Should Not Be Equal ${oldr.json()['lt']} ${r.json()['lt']}
+ Should Be Equal As Integers ${oldst+1} ${r.json()['m2m:cnt']['st']}
+ Should Not Be Equal ${oldr.json()['m2m:cnt']['lt']} ${r.json()['m2m:cnt']['lt']}
# 4.35 stateTag (when update announceTo)
# 4.36 stateTag (when update announceAttribute)
4.37 stateTag (when update MaxNrOfInstances) + lastModifiedTime
[Documentation] st and lt should be changed
${oldr} = Retrieve Resource ${iserver} InCSE1/Container2
- ${oldst} = Set Variable ${oldr.json()['st']}
+ ${oldst} = Set Variable ${oldr.json()['m2m:cnt']['st']}
${attr} = Set Variable "mni":5
Sleep 1s
# We know Beryllium is going to be get rid of all sleep.
# we need to wait 1 second to see different value on update.
Update Resource ${iserver} InCSE1/Container2 ${rt_container} ${attr}
${r} = Retrieve Resource ${iserver} InCSE1/Container2
- Should Be Equal As Integers ${oldst+1} ${r.json()['st']}
- Should Not Be Equal ${oldr.json()['lt']} ${r.json()['lt']}
+ Should Be Equal As Integers ${oldst+1} ${r.json()['m2m:cnt']['st']}
+ Should Not Be Equal ${oldr.json()['m2m:cnt']['lt']} ${r.json()['m2m:cnt']['lt']}
4.38 stateTag (when update MaxByteSize) + lastModifiedTime
[Documentation] st and lt should be changed
${oldr} = Retrieve Resource ${iserver} InCSE1/Container2
- ${oldst} = Set Variable ${oldr.json()['st']}
+ ${oldst} = Set Variable ${oldr.json()['m2m:cnt']['st']}
${attr} = Set Variable "mbs":30
Sleep 1s
# We know Beryllium is going to be get rid of all sleep.
# we need to wait 1 second to see different value on update.
Update Resource ${iserver} InCSE1/Container2 ${rt_container} ${attr}
${r} = Retrieve Resource ${iserver} InCSE1/Container2
- Should Be Equal As Integers ${oldst+1} ${r.json()['st']}
- Should Not Be Equal ${oldr.json()['lt']} ${r.json()['lt']}
+ Should Be Equal As Integers ${oldst+1} ${r.json()['m2m:cnt']['st']}
+ Should Not Be Equal ${oldr.json()['m2m:cnt']['lt']} ${r.json()['m2m:cnt']['lt']}
# 4.39 stateTag (when update maxInstanceAge)
# 4.310 stateTag (when update locationID)
4.311 stateTag (when update ontologyRef) + lastModifiedTime
[Documentation] st and lt should be changed
${oldr} = Retrieve Resource ${iserver} InCSE1/Container2
- ${oldst} = Set Variable ${oldr.json()['st']}
+ ${oldst} = Set Variable ${oldr.json()['m2m:cnt']['st']}
${attr} = Set Variable "or":"http://google.com"
Sleep 1s
# We know Beryllium is going to be get rid of all sleep.
# we need to wait 1 second to see different value on update.
Update Resource ${iserver} InCSE1/Container2 ${rt_container} ${attr}
${r} = Retrieve Resource ${iserver} InCSE1/Container2
- Should Be Equal As Integers ${oldst+1} ${r.json()['st']}
- Should Not Be Equal ${oldr.json()['lt']} ${r.json()['lt']}
+ Should Be Equal As Integers ${oldst+1} ${r.json()['m2m:cnt']['st']}
+ Should Not Be Equal ${oldr.json()['m2m:cnt']['lt']} ${r.json()['m2m:cnt']['lt']}
4.312 when create child container, stateTag will not increase + lastModifiedTime should change
[Documentation] when create child container, stateTag will not increase + lastModifiedTime should not change
# |--Contianer2
# |--Container3
${oldr} = Retrieve Resource ${iserver} InCSE1/Container2
- ${oldst} = Set Variable ${oldr.json()['st']}
- ${attr} = Set Variable "lbl":["label1"]
- Sleep 1s
+ ${oldst} = Set Variable ${oldr.json()['m2m:cnt']['st']}
+ ${attr} = Set Variable "lbl":["label1"],"rn":"Container3"
+ Sleep 2s
# We know Beryllium is going to be get rid of all sleep.
# But as lastModifiedTime has precision in seconds,
# we need to wait 1 second to see different value on update.
- Create Resource ${iserver} InCSE1/Container2 ${rt_container} ${attr} Container3
+ Create Resource ${iserver} InCSE1/Container2 ${rt_container} ${attr}
${r} = Retrieve Resource ${iserver} InCSE1/Container2
- ${text} = Text ${r}
- LOG ${text}
- Should Be Equal As Integers ${oldst} ${r.json()['st']}
- Should Not Be Equal ${oldr.json()['lt']} ${r.json()['lt']}
+ Should Be Equal As Integers ${oldst} ${r.json()['m2m:cnt']['st']}
+ Should Not Be Equal ${oldr.json()['m2m:cnt']['lt']} ${r.json()['m2m:cnt']['lt']}
4.313 * when create child contentInsntance, state should increase + lastModifiedTime shold change
[Documentation] when create child contentInsntance, state should increase + lastModifiedTime shold not change
# |--Contianer2
# |--ContentInstance
${oldr} = Retrieve Resource ${iserver} InCSE1/Container2
- ${oldst} = Set Variable ${oldr.json()['st']}
+ ${oldst} = Set Variable ${oldr.json()['m2m:cnt']['st']}
${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"102"
- Sleep 1s
+ Sleep 2s
# We know Beryllium is going to be get rid of all sleep.
# But as lastModifiedTime has precision in seconds,
# we need to wait 1 second to see different value on update.
Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr}
${r} = Retrieve Resource ${iserver} InCSE1/Container2
- ${text} = Text ${r}
- LOG ${text}
- Should Be Equal As Integers ${oldst+1} ${r.json()['st']}
- Should Not Be Equal ${oldr.json()['lt']} ${r.json()['lt']}
+ Should Be Equal As Integers ${oldst+1} ${r.json()['m2m:cnt']['st']}
+ Should Not Be Equal ${oldr.json()['m2m:cnt']['lt']} ${r.json()['m2m:cnt']['lt']}
4.314 stateTag should not be updated when update child container
[Documentation] stateTag should not be updated when update child container
# |--Contianer2
# |--Container3
${oldr} = Retrieve Resource ${iserver} InCSE1/Container2
- ${oldst} = Set Variable ${oldr.json()['st']}
+ ${oldst} = Set Variable ${oldr.json()['m2m:cnt']['st']}
${attr} = Set Variable "lbl":["label45"]
Sleep 1s
# We know Beryllium is going to be get rid of all sleep.
# we need to wait 1 second to see different value on update.
Update Resource ${iserver} InCSE1/Container2/Container3 ${rt_container} ${attr}
${r} = Retrieve Resource ${iserver} InCSE1/Container2
- ${text} = Text ${r}
- LOG ${text}
- Should Be Equal As Integers ${oldst} ${r.json()['st']}
+ Should Be Equal As Integers ${oldst} ${r.json()['m2m:cnt']['st']}
${lt2} = LastModifiedTime ${r}
- Should Be Equal ${oldr.json()['lt']} ${r.json()['lt']}
+ Should Be Equal ${oldr.json()['m2m:cnt']['lt']} ${lt2}
Delete the Container2-4.3
${deleteRes} = Delete Resource ${iserver} InCSE1/Container2
4.41 when container create, cni should be 0
[Documentation] when container create, cni should be 0
- ${attr} = Set Variable
- ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr} Container2
- ${container} = Name ${r}
+ ${attr} = Set Variable "rn":"Container2"
+ ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr}
+ ${container} = Location ${r}
${status_code} = Status Code ${r}
- ${oldr} = Retrieve Resource ${iserver} InCSE1/Container2
- ${cni} = Set Variable ${oldr.json()['cni']}
+ ${oldr} = Retrieve Resource ${iserver} ${container}
+ ${cni} = Set Variable ${oldr.json()['m2m:cnt']['cni']}
Should Be Equal As Integers 0 ${cni}
4.42 when conInstance create, parent container's cni should + 1
[Documentation] when conInstance create, parent container's cni should + 1
${oldr} = Retrieve Resource ${iserver} InCSE1/Container2
- ${oldcni} = Set Variable ${oldr.json()['cni']}
+ ${oldcni} = Set Variable ${oldr.json()['m2m:cnt']['cni']}
${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"102"
Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr}
${r} = Retrieve Resource ${iserver} InCSE1/Container2
- ${text} = Text ${r}
- LOG ${text}
- Should Be Equal As Integers ${oldcni+1} ${r.json()['cni']}
+ Should Be Equal As Integers ${oldcni+1} ${r.json()['m2m:cnt']['cni']}
# Test again
${oldr} = Retrieve Resource ${iserver} InCSE1/Container2
- ${oldcni} = Set Variable ${oldr.json()['cni']}
- ${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"102"
- Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr} contentIn1
+ ${oldcni} = Set Variable ${oldr.json()['m2m:cnt']['cni']}
+ ${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"102","rn":"contentIn1"
+ Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr}
${r} = Retrieve Resource ${iserver} InCSE1/Container2
- ${text} = Text ${r}
- LOG ${text}
- Should Be Equal As Integers ${oldcni+1} ${r.json()['cni']}
+ Should Be Equal As Integers ${oldcni+1} ${r.json()['m2m:cnt']['cni']}
4.43 when conInstance delete, parent container's cni should - 1
[Documentation] Delete the conIn created in 4.42, when conInstance delete, parent container's cni should - 1
${oldr} = Retrieve Resource ${iserver} InCSE1/Container2
- ${oldcni} = Set Variable ${oldr.json()['cni']}
+ ${oldcni} = Set Variable ${oldr.json()['m2m:cnt']['cni']}
${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"102"
Delete Resource ${iserver} InCSE1/Container2/contentIn1
${r} = Retrieve Resource ${iserver} InCSE1/Container2
- ${text} = Text ${r}
- LOG ${text}
- Should Be Equal As Integers ${oldcni-1} ${r.json()['cni']}
+ Should Be Equal As Integers ${oldcni-1} ${r.json()['m2m:cnt']['cni']}
Delete the Container2-4.4
${deleteRes} = Delete Resource ${iserver} InCSE1/Container2
4.51 when container create, cbs should be 0
[Documentation] when container create, cbs should be 0
- ${attr} = Set Variable
- ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr} Container2
- ${container} = Name ${r}
+ ${attr} = Set Variable "rn":"Container2"
+ ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr}
+ ${container} = Location ${r}
${status_code} = Status Code ${r}
- ${oldr} = Retrieve Resource ${iserver} InCSE1/Container2
- ${cbs} = Set Variable ${oldr.json()['cbs']}
+ ${oldr} = Retrieve Resource ${iserver} ${container}
+ ${cbs} = Set Variable ${oldr.json()['m2m:cnt']['cbs']}
Should Be Equal As Integers 0 ${cbs}
4.52 when conInstance create, parent container's cbs should + cs
[Documentation] when conInstance create, parent container's cbs should + cs
${oldr} = Retrieve Resource ${iserver} InCSE1/Container2
- ${oldcbs} = Set Variable ${oldr.json()['cbs']}
+ ${oldcbs} = Set Variable ${oldr.json()['m2m:cnt']['cbs']}
${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"102CSS"
Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr}
${r} = Retrieve Resource ${iserver} InCSE1/Container2
- ${text} = Text ${r}
- LOG ${text}
- Should Be Equal As Integers ${oldcbs+6} ${r.json()['cbs']}
+ Should Be Equal As Integers ${oldcbs+6} ${r.json()['m2m:cnt']['cbs']}
# Test again
${oldr} = Retrieve Resource ${iserver} InCSE1/Container2
- ${oldcbs} = Set Variable ${oldr.json()['cbs']}
- ${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"xxx%%!@"
- Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr} contentIn1
+ ${oldcbs} = Set Variable ${oldr.json()['m2m:cnt']['cbs']}
+ ${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"xxx%%!@","rn":"contentIn1"
+ Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr}
${r} = Retrieve Resource ${iserver} InCSE1/Container2
- ${text} = Text ${r}
- LOG ${text}
- Should Be Equal As Integers ${oldcbs+7} ${r.json()['cbs']}
+ Should Be Equal As Integers ${oldcbs+7} ${r.json()['m2m:cnt']['cbs']}
4.53 when conInstance delete, parent container's cbs should - cs
[Documentation] Delete the conIn created in 4.52, when conInstance delete, parent container's cbs should - cs
${oldr} = Retrieve Resource ${iserver} InCSE1/Container2
- ${oldcbs} = Set Variable ${oldr.json()['cbs']}
+ ${oldcbs} = Set Variable ${oldr.json()['m2m:cnt']['cbs']}
${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"102"
Delete Resource ${iserver} InCSE1/Container2/contentIn1
${r} = Retrieve Resource ${iserver} InCSE1/Container2
- ${text} = Text ${r}
- LOG ${text}
- Should Be Equal As Integers ${oldcbs-7} ${r.json()['cbs']}
+ Should Be Equal As Integers ${oldcbs-7} ${r.json()['m2m:cnt']['cbs']}
Delete the Container2-4.5
${deleteRes} = Delete Resource ${iserver} InCSE1/Container2
4.61 if maxNrOfInstance = 1 , can create 1 contentInstance
[Documentation] if maxNrOfInstance = 1 , can create 1 contentInstance
- ${attr} = Set Variable "mni":1
- ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr} Container2
- ${container} = Name ${r}
+ ${attr} = Set Variable "mni":1,"rn":"Container2"
+ ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr}
+ ${container} = Location ${r}
${status_code} = Status Code ${r}
- ${oldr} = Retrieve Resource ${iserver} InCSE1/Container2
- ${mni} = Set Variable ${oldr.json()['mni']}
+ ${oldr} = Retrieve Resource ${iserver} ${container}
+ ${mni} = Set Variable ${oldr.json()['m2m:cnt']['mni']}
Should Be Equal As Integers 1 ${mni}
${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"102CSS"
Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr}
-4.62 if maxNrOfInstance = 1 , cannot create 2 contentInstance
+4.62 if maxNrOfInstance = 1 , when create 2 contentInstance, the first one should be deleted
[Documentation] if maxNrOfInstance = 1 , cannot create 2 contentInstance
${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"102CSS"
# cannot create 2
- ${error} = Run Keyword And Expect Error * Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance}
- ... ${attr}
- Should Start with ${error} Cannot create this resource [400]
-
-4.63 if update to 3 , cannot create 4 contentInstance
+ ${rr} = Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr}
+ Check Response and Retrieve Resource ${rr}
+ ${rr} = Retrieve resource ${iserver} InCSE1/Container2
+ ${chr} = Set Variable ${rr.json()['m2m:cnt']['ch']}
+ ${cbs} = Set Variable ${rr.json()['m2m:cnt']['cbs']}
+ Should Be Equal As Integers ${rr.json()['m2m:cnt']['cni']} 1
+ ${childNumber} = Get Length ${chr}
+ Should Be Equal As Integers ${childNumber} 1
+
+4.63 if update to 3 , when create 4 or more contentInstance, the current number instance should be 3
[Documentation] if update to 3 , cannot create 4 contentInstance
${attr} = Set Variable "mni":3
${r}= Update Resource ${iserver} InCSE1/Container2 ${rt_container} ${attr}
${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"102CSS"
# create 3
- Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr} cin1
- Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr} cin2
+ Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr}
+ Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr}
#Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr}
${rr}= Retrieve resource ${iserver} InCSE1/Container2
- ${mni} = Set Variable ${rr.json()['mni']}
- ${chr} = Set Variable ${rr.json()['ch']}
- ${text} = Text ${rr}
- LOG ${text}
- # cannot create 4
- ${error} = Run Keyword And Expect Error * Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance}
- ... ${attr}
- Should Start with ${error} Cannot create this resource [400]
+ Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr}
+ ${mni} = Set Variable ${rr.json()['m2m:cnt']['mni']}
+ ${chr} = Set Variable ${rr.json()['m2m:cnt']['ch']}
+ Should Be Equal As Integers ${mni} 3
-4.64 what if alread have 4, then set mni to 1 ?
- [Documentation] what if alread have 4, then set mni to 1 ?
+4.64 what if alread have 4, then set mni to 1
+ [Documentation] if alread have 4, then set mni to 1, will delete 3 children
${attr} = Set Variable "mni":1
${r}= Update Resource ${iserver} InCSE1/Container2 ${rt_container} ${attr}
${rr}= Retrieve resource ${iserver} InCSE1/Container2
- ${chr} = Set Variable ${rr.json()['ch']}
- ${mni} = Set Variable ${rr.json()['mni']}
- Should Be Equal As Integers ${rr.json()['cni']} 1
+ ${chr} = Set Variable ${rr.json()['m2m:cnt']['ch']}
+ ${mni} = Set Variable ${rr.json()['m2m:cnt']['mni']}
+ Should Be Equal As Integers ${rr.json()['m2m:cnt']['cni']} 1
Delete the Container2-4.6
${deleteRes} = Delete Resource ${iserver} InCSE1/Container2
4.71 if maxByteSize = 5 , can create contentInstance with contentSize 5
[Documentation] if maxByteSize = 5 , can create contentInstance with contentSize 5
- ${attr} = Set Variable "mbs":5
- ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr} Container2
- ${container} = Name ${r}
+ ${attr} = Set Variable "mbs":5,"rn":"Container2"
+ ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr}
+ ${container} = Location ${r}
${status_code} = Status Code ${r}
- ${oldr} = Retrieve Resource ${iserver} InCSE1/Container2
- ${mbs} = Set Variable ${oldr.json()['mbs']}
+ ${oldr} = Retrieve Resource ${iserver} ${container}
+ ${mbs} = Set Variable ${oldr.json()['m2m:cnt']['mbs']}
Should Be Equal As Integers 5 ${mbs}
4.72 if maxByteSize = 5 , cannot create contentInstance with contenSize 8
[Documentation] if maxByteSize = 5 , cannot create contentInstance with contenSize 8
- ${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"102C"
- # create 1 (6 bytes)
- Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr}
+ ${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"102C120c"
# cannot create 2
${error} = Run Keyword And Expect Error * Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance}
... ${attr}
${attr} = Set Variable "mbs":20
${r}= Update Resource ${iserver} InCSE1/Container2 ${rt_container} ${attr}
${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"102CS"
- # create 3
- Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr} cin1
- Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr} cin2
- Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr} cin3
- Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr} cin4
+ # create 4 cin
+ Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr}
+ Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr}
+ Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr}
+ Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance} ${attr}
${rr}= Retrieve resource ${iserver} InCSE1/Container2
- ${cbs} = Set Variable ${rr.json()['cbs']}
- ${chr} = Set Variable ${rr.json()['ch']}
- ${text} = Text ${rr}
- LOG ${text}
- # cannot create 4
- ${error} = Run Keyword And Expect Error * Create Resource ${iserver} InCSE1/Container2 ${rt_contentInstance}
- ... ${attr}
- Should Start with ${error} Cannot create this resource [400]
-
-4.74 what if alread have 20, then set mbs to 5 ?
- [Documentation] what if alread have 20, then set mbs to 5 ?
+ ${cbs} = Set Variable ${rr.json()['m2m:cnt']['cbs']}
+ ${chr} = Set Variable ${rr.json()['m2m:cnt']['ch']}
+ Should Be Equal As Integers ${rr.json()['m2m:cnt']['cni']} 4
+ ${childNumber} = Get Length ${chr}
+ Should Be Equal As Integers ${childNumber} 4
+
+4.74 if alread have 20, then set mbs to 5,will delete contentInstance until mbs less than 5.
+ [Documentation] what if alread have 20, then set mbs to 5, will delete contentInstance until mbs less than 5.
${attr} = Set Variable "mbs":5
${r}= Update Resource ${iserver} InCSE1/Container2 ${rt_container} ${attr}
${rr}= Retrieve resource ${iserver} InCSE1/Container2
- ${chr} = Set Variable ${rr.json()['ch']}
- ${cbs} = Set Variable ${rr.json()['cbs']}
- Should Be Equal As Integers ${rr.json()['cni']} 1
+ ${chr} = Set Variable ${rr.json()['m2m:cnt']['ch']}
+ ${cbs} = Set Variable ${rr.json()['m2m:cnt']['cbs']}
+ Should Be Equal As Integers ${rr.json()['m2m:cnt']['cni']} 1
+ ${childNumber} = Get Length ${chr}
+ Should Be Equal As Integers ${childNumber} 1
Delete the Container2-4.7
${deleteRes} = Delete Resource ${iserver} InCSE1/Container2
*** Keywords ***
Check Response and Retrieve Resource
[Arguments] ${r}
- ${con} = Name ${r}
+ ${con} = Location ${r}
${status_code} = Status Code ${r}
Should Be True 199 < ${status_code} < 299
${rr} = Retrieve Resource ${iserver} ${con}
${text} = Text ${rr}
[Return] ${text}
+Check Response and Retrieve Resource For Update
+ [Arguments] ${r} ${location}
+ ${status_code} = Status Code ${r}
+ Should Be True 199 < ${status_code} < 299
+ ${rr} = Retrieve Resource ${iserver} ${location}
+ ${text} = Text ${rr}
+ [Return] ${text}
+
Cannot Create Container Error
[Arguments] ${attr}
[Documentation] create Container Under InCSE1 and expect error
1.1 After Created, test whether all the mandatory attribtues are exist.
[Documentation] create 1 conIn test whether all the mandatory attribtues are exist
- ${attr} = Set Variable
- ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr} Container1
- ${container} = Name ${r}
+ ${attr} = Set Variable "rn":"Container1"
+ ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr}
+ ${container} = Location ${r}
${status_code} = Status Code ${r}
Should Be Equal As Integers ${status_code} 201
- ${attr} = Set Variable "con":"102CSS"
- Create Resource ${iserver} InCSE1/Container1 ${rt_contentInstance} ${attr} conIn1
+ ${attr} = Set Variable "con":"102CSS","rn":"conIn1"
+ Create Resource ${iserver} InCSE1/Container1 ${rt_contentInstance} ${attr}
${text} = Text ${r}
Should Contain ${text} "ri": "rn": "cs":
Should Contain ${text} "lt": "pi": "con":
2.11 ContentInfo (cnf) can be added when create
[Documentation] ContentInfo (cnf) can be added when create
- ${attr} = Set Variable "cnf": "1","con":"102CSS"
+ ${attr} = Set Variable "cnf": "1","con":"102CSS","rn":"conIn2"
# create conIn under Container1
- ${r}= Create Resource ${iserver} InCSE1/Container1 ${rt_contentInstance} ${attr} conIn2
+ ${r}= Create Resource ${iserver} InCSE1/Container1 ${rt_contentInstance} ${attr}
${text} = Check Create and Retrieve ContentInstance ${r}
Should Contain ${text} cnf
2.21 OntologyRef (or) can be added when create
[Documentation] OntologyRef (or) can be added when create
- ${attr} = Set Variable "or": "http://cisco.com","con":"102CSS"
+ ${attr} = Set Variable "or": "http://cisco.com","con":"102CSS","rn":"conIn2"
# create conIn under Container1
- ${r}= Create Resource ${iserver} InCSE1/Container1 ${rt_contentInstance} ${attr} conIn2
+ ${r}= Create Resource ${iserver} InCSE1/Container1 ${rt_contentInstance} ${attr}
${text} = Check Create and Retrieve ContentInstance ${r}
Should Contain ${text} or
2.31 labels[single] can be added when create
[Documentation] create conIn under Container1, labels[single] can be added when create
- ${attr} = Set Variable "lbl":["ds"],"con":"102CSS"
- ${r}= Create Resource ${iserver} InCSE1/Container1 ${rt_contentInstance} ${attr} conIn2
+ ${attr} = Set Variable "lbl":["ds"],"con":"102CSS","rn":"conIn2"
+ ${r}= Create Resource ${iserver} InCSE1/Container1 ${rt_contentInstance} ${attr}
${text} = Check Create and Retrieve ContentInstance ${r}
Should Contain ${text} lbl
2.33 labels (multiple) can be added when create
[Documentation] labels (multiple) can be added when create
- ${attr} = Set Variable "lbl":["http://cisco.com","dsds"],"con":"102CSS"
+ ${attr} = Set Variable "lbl":["http://cisco.com","dsds"],"con":"102CSS","rn":"conIn2"
# create conIn under Container1
- ${r}= Create Resource ${iserver} InCSE1/Container1 ${rt_contentInstance} ${attr} conIn2
+ ${r}= Create Resource ${iserver} InCSE1/Container1 ${rt_contentInstance} ${attr}
${text} = Check Create and Retrieve ContentInstance ${r}
Should Contain ${text} lbl
${attr} = Set Variable "con": "1"
${error} = Cannot Update ContentInstance Error ${attr}
Should Contain ${error} Not permitted to update content
- #==================================================
- # Functional Attribute Test
- #==================================================
- # Next step:
- # creator
- # contentSzie
- # contentInfo
- # content
- #==================================================
- # Finish
- #==================================================
+
+4.11 GetLatest Test
+ [Documentation] Set mni to 1 when creating a container, then continue creating <cin> "get latest" should always return the last created <cin>'s "con" value.
+ ${attr} = Set Variable "mni":1,"rn":"Container2"
+ ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr}
+ ${container} = Location ${r}
+ ${random} = Evaluate random.randint(0,50) modules=random
+ ${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"${random}"
+ Create Resource ${iserver} ${container} ${rt_contentInstance} ${attr}
+ ${latestCon} = Get Latest ${container}
+ Should Be Equal As Strings ${random} ${latestCon}
+
+4.12 GetLatest Loop 50 times Test
+ [Documentation] Just like 4.11, but do 50 times.
+ ${attr} = Set Variable "mni":1,"rn":"Container3"
+ ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr}
+ ${container} = Location ${r}
+ : FOR ${INDEX} IN RANGE 1 100
+ \ Latest Con Test ${container}
Delete the test Container1
[Documentation] Delete the test Container1
Check Create and Retrieve ContentInstance
[Arguments] ${r}
- ${con} = Name ${r}
+ ${con} = Location ${r}
${status_code} = Status Code ${r}
Should Be Equal As Integers ${status_code} 201
${rr} = Retrieve Resource ${iserver} ${con}
${text} = Text ${rr}
[Return] ${text}
+
+Get Latest
+ [Arguments] ${resourceURI}
+ ${latest} = Retrieve Resource ${iserver} ${resourceURI}/latest
+ [Return] ${latest.json()['m2m:cin']['con']}
+
+Latest Con Test
+ [Arguments] ${resourceURI}
+ ${random} = Evaluate random.randint(0,50) modules=random
+ ${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"${random}"
+ Create Resource ${iserver} ${resourceURI} ${rt_contentInstance} ${attr}
+ ${latestCon} = Get Latest ${resourceURI}
+ Should Be Equal As Strings ${random} ${latestCon}
4.11 Delete AE without child resource
[Documentation] Create AE then delete it
- ${attr} = Set Variable "aei":"ODL","api":"jb","apn":"jb2","or":"http://hey/you"
+ ${attr} = Set Variable "api":"jb","apn":"jb2","or":"http://hey/you","rr":true
${r} = Create Resource ${iserver} InCSE1 ${rt_ae} ${attr}
- ${ae} = Name ${r}
+ ${ae} = Location ${r}
Response Is Correct ${r}
#------------- Delete -----------------------------
${deleteRes} = Delete Resource ${iserver} ${ae}
[Documentation] create container then delete it
${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you"
${r} = Create Resource ${iserver} InCSE1 ${rt_container} ${attr}
- ${container} = Name ${r}
+ ${container} = Location ${r}
Response Is Correct ${r}
#------------- Delete -----------------------------
${deleteRes} = Delete Resource ${iserver} ${container}
4.13 Delete contentInstance under InCSE1/AE/container/
[Documentation] Delete contentInstance under InCSE1/AE/container/
- ${attr} = Set Variable "aei":"ODL","api":"jb","apn":"jb2","or":"http://hey/you"
- ${r} = Create Resource ${iserver} InCSE1 ${rt_ae} ${attr} AE1
- ${ae} = Name ${r}
+ ${attr} = Set Variable "api":"jb","apn":"jb2","or":"http://hey/you","rr":true,"rn":"AE1"
+ ${r} = Create Resource ${iserver} InCSE1 ${rt_ae} ${attr}
+ ${ae} = Location ${r}
Response Is Correct ${r}
- ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you"
- ${r} = Create Resource ${iserver} ${ae} ${rt_container} ${attr} Con1
- ${container} = Name ${r}
+ ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you","rn":"Con1"
+ ${r} = Create Resource ${iserver} ${ae} ${rt_container} ${attr}
+ ${container} = Location ${r}
Response Is Correct ${r}
${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"101"
${r} = Create Resource ${iserver} ${container} ${rt_contentInstance} ${attr}
- ${conIn} = Name ${r}
+ ${conIn} = Location ${r}
Response Is Correct ${r}
#------------- Delete -----------------------------
${deleteRes} = Delete Resource ${iserver} ${conIn}
4.14 Delete contentInstance under InCSE1/Container/
[Documentation] Delete contentInstance under InCSE1/Container/
- ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you"
- ${r} = Create Resource ${iserver} InCSE1 ${rt_container} ${attr} Con2
- ${container} = Name ${r}
+ ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you","rn":"Con2"
+ ${r} = Create Resource ${iserver} InCSE1 ${rt_container} ${attr}
+ ${container} = Location ${r}
Response Is Correct ${r}
${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"101"
${r} = Create Resource ${iserver} ${container} ${rt_contentInstance} ${attr}
- ${conIn} = Name ${r}
+ ${conIn} = Location ${r}
Response Is Correct ${r}
#------------- Delete -----------------------------
${deleteRes} = Delete Resource ${iserver} ${conIn}
4.15 Delete contentIsntance under InCSE1/Container/container/
[Documentation] Delete contentIsntance under InCSE1/Container/container/
- ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you"
- ${r} = Create Resource ${iserver} InCSE1/Con2 ${rt_container} ${attr} Con3
- ${container} = Name ${r}
+ ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you","rn":"Con3"
+ ${r} = Create Resource ${iserver} InCSE1/Con2 ${rt_container} ${attr}
+ ${container} = Location ${r}
Response Is Correct ${r}
${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"101"
${r} = Create Resource ${iserver} ${container} ${rt_contentInstance} ${attr}
- ${conIn} = Name ${r}
+ ${conIn} = Location ${r}
Response Is Correct ${r}
#------------- Delete -----------------------------
${deleteRes} = Delete Resource ${iserver} ${conIn}
4.22 Delete AE with 3 child Container
[Documentation] Delete AE with 3 child Container
- ${attr} = Set Variable "aei":"ODL","api":"jb","apn":"jb2","or":"http://hey/you"
- ${r} = Create Resource ${iserver} InCSE1 ${rt_ae} ${attr} AE1
- ${ae} = Name ${r}
+ ${attr} = Set Variable "api":"jb","apn":"jb2","or":"http://hey/you","rr":true,"rn":"AE1"
+ ${r} = Create Resource ${iserver} InCSE1 ${rt_ae} ${attr}
+ ${ae} = Location ${r}
Response Is Correct ${r}
- ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you"
- ${r} = Create Resource ${iserver} ${ae} ${rt_container} ${attr} Con2
- ${container} = Name ${r}
+ ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you","rn":"Con2"
+ ${r} = Create Resource ${iserver} ${ae} ${rt_container} ${attr}
+ ${container} = Location ${r}
Response Is Correct ${r}
- ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you"
- ${r} = Create Resource ${iserver} ${ae} ${rt_container} ${attr} Con3
- ${container} = Name ${r}
+ ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you","rn":"Con3"
+ ${r} = Create Resource ${iserver} ${ae} ${rt_container} ${attr}
+ ${container} = Location ${r}
Response Is Correct ${r}
- ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you"
- ${r} = Create Resource ${iserver} ${ae} ${rt_container} ${attr} Con4
- ${container} = Name ${r}
+ ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you","rn":"Con4"
+ ${r} = Create Resource ${iserver} ${ae} ${rt_container} ${attr}
+ ${container} = Location ${r}
Response Is Correct ${r}
# ----------- Delete the parent AE --------------
${r} = Delete Resource ${iserver} InCSE1/AE1
4.23 Delete AE with 1 child Container/1 contentInstance
[Documentation] Delete AE with 1 child Container/1 contentInstance
- ${attr} = Set Variable "aei":"ODL","api":"jb","apn":"jb2","or":"http://hey/you"
- ${r} = Create Resource ${iserver} InCSE1 ${rt_ae} ${attr} AE1
- ${ae} = Name ${r}
+ ${attr} = Set Variable "api":"jb","apn":"jb2","or":"http://hey/you","rr":true,"rn":"AE1"
+ ${r} = Create Resource ${iserver} InCSE1 ${rt_ae} ${attr}
+ ${ae} = Location ${r}
Response Is Correct ${r}
- ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you"
- ${r} = Create Resource ${iserver} ${ae} ${rt_container} ${attr} Con2
- ${container} = Name ${r}
+ ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you","rn":"Con2"
+ ${r} = Create Resource ${iserver} ${ae} ${rt_container} ${attr}
+ ${container} = Location ${r}
Response Is Correct ${r}
- ${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"101"
- ${r} = Create Resource ${iserver} ${container} ${rt_contentInstance} ${attr} conIn1
- ${name} = Name ${r}
+ ${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"101","rn":"conIn1"
+ ${r} = Create Resource ${iserver} ${container} ${rt_contentInstance} ${attr}
+ ${name} = Location ${r}
Response Is Correct ${r}
# ----------- Delete the parent AE --------------
${r} = Delete Resource ${iserver} InCSE1/AE1
4.24 Delete AE with 1 child Container/3 contentInsntace
[Documentation] Delete AE with 1 child Container/3 contentInsntace
- ${attr} = Set Variable "aei":"ODL","api":"jb","apn":"jb2","or":"http://hey/you"
- ${r} = Create Resource ${iserver} InCSE1 ${rt_ae} ${attr} AE1
- ${ae} = Name ${r}
+ ${attr} = Set Variable "api":"jb","apn":"jb2","or":"http://hey/you","rr":true,"rn":"AE1"
+ ${r} = Create Resource ${iserver} InCSE1 ${rt_ae} ${attr}
+ ${ae} = Location ${r}
Response Is Correct ${r}
- ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you"
- ${r} = Create Resource ${iserver} ${ae} ${rt_container} ${attr} Con2
- ${container} = Name ${r}
+ ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you","rn":"Con2"
+ ${r} = Create Resource ${iserver} ${ae} ${rt_container} ${attr}
+ ${container} = Location ${r}
Response Is Correct ${r}
- ${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"101"
- ${r} = Create Resource ${iserver} ${container} ${rt_contentInstance} ${attr} conIn1
+ ${attr1} = Set Variable "cnf": "1","or": "http://hey/you","con":"101","rn":"conIn1"
+ ${r} = Create Resource ${iserver} ${container} ${rt_contentInstance} ${attr1}
Response Is Correct ${r}
- ${r} = Create Resource ${iserver} ${container} ${rt_contentInstance} ${attr} conIn2
+ ${attr2} = Set Variable "cnf": "1","or": "http://hey/you","con":"101","rn":"conIn2"
+ ${r} = Create Resource ${iserver} ${container} ${rt_contentInstance} ${attr2}
Response Is Correct ${r}
- ${r} = Create Resource ${iserver} ${container} ${rt_contentInstance} ${attr} conIn3
+ ${attr3} = Set Variable "cnf": "1","or": "http://hey/you","con":"101","rn":"conIn3"
+ ${r} = Create Resource ${iserver} ${container} ${rt_contentInstance} ${attr3}
Response Is Correct ${r}
# ----------- Delete the parent AE --------------
${r} = Delete Resource ${iserver} InCSE1/AE1
4.25 Delete AE with 3 child Container/9 contentInstance
[Documentation] Delete AE with 3 child Container/9 contentInstance
- ${attr} = Set Variable "aei":"ODL","api":"jb","apn":"jb2","or":"http://hey/you"
- ${r} = Create Resource ${iserver} InCSE1 ${rt_ae} ${attr} AE1
- ${ae} = Name ${r}
+ ${attr} = Set Variable "api":"jb","apn":"jb2","or":"http://hey/you","rr":true,"rn":"AE1"
+ ${r} = Create Resource ${iserver} InCSE1 ${rt_ae} ${attr}
+ ${ae} = Location ${r}
Response Is Correct ${r}
- ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you"
- ${r} = Create Resource ${iserver} ${ae} ${rt_container} ${attr} Con1
- ${container1} = Name ${r}
+ ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you","rn":"Con1"
+ ${r} = Create Resource ${iserver} ${ae} ${rt_container} ${attr}
+ ${container1} = Location ${r}
Response Is Correct ${r}
- ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you"
- ${r} = Create Resource ${iserver} ${ae} ${rt_container} ${attr} Con2
- ${container2} = Name ${r}
+ ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you","rn":"Con2"
+ ${r} = Create Resource ${iserver} ${ae} ${rt_container} ${attr}
+ ${container2} = Location ${r}
Response Is Correct ${r}
- ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you"
- ${r} = Create Resource ${iserver} ${ae} ${rt_container} ${attr} Con3
- ${container3} = Name ${r}
+ ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you","rn":"Con3"
+ ${r} = Create Resource ${iserver} ${ae} ${rt_container} ${attr}
+ ${container3} = Location ${r}
Response Is Correct ${r}
${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"101"
: FOR ${conName} IN conIn1 conIn2 conIn3
- \ ${r} = Create Resource ${iserver} ${container1} ${rt_contentInstance} ${attr}
- \ ... ${conName}
+ \ ${r} = Create Resource ${iserver} ${container1} ${rt_contentInstance} ${attr},"rn":${conName}
\ Response Is Correct ${r}
: FOR ${conName} IN conIn1 conIn2 conIn3
- \ ${r} = Create Resource ${iserver} ${container2} ${rt_contentInstance} ${attr}
- \ ... ${conName}
+ \ ${r} = Create Resource ${iserver} ${container2} ${rt_contentInstance} ${attr},"rn":${conName}
\ Response Is Correct ${r}
: FOR ${conName} IN conIn1 conIn2 conIn3
- \ ${r} = Create Resource ${iserver} ${container3} ${rt_contentInstance} ${attr}
- \ ... ${conName}
+ \ ${r} = Create Resource ${iserver} ${container3} ${rt_contentInstance} ${attr},"rn":${conName}
\ Response Is Correct ${r}
# ----------- Delete the parent AE --------------
${r} = Delete Resource ${iserver} InCSE1/AE1
4.32 Delete Container with 3 child Container
[Documentation] Delete Container with 3 child Container
${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you"
- ${r} = Create Resource ${iserver} InCSE1 ${rt_container} ${attr} ConTop1
- ${container} = Name ${r}
+ ${r} = Create Resource ${iserver} InCSE1 ${rt_container} ${attr},"rn":"ConTop1"
+ ${container} = Location ${r}
Response Is Correct ${r}
- ${r} = Create Resource ${iserver} ${container} ${rt_container} ${attr} Con1
- ${container1} = Name ${r}
+ ${r} = Create Resource ${iserver} ${container} ${rt_container} ${attr},"rn":"Con1"
+ ${container1} = Location ${r}
Response Is Correct ${r}
- ${r} = Create Resource ${iserver} ${container} ${rt_container} ${attr} Con2
- ${container2} = Name ${r}
+ ${r} = Create Resource ${iserver} ${container} ${rt_container} ${attr},"rn":"Con2"
+ ${container2} = Location ${r}
Response Is Correct ${r}
- ${r} = Create Resource ${iserver} ${container} ${rt_container} ${attr} Con3
- ${container3} = Name ${r}
+ ${r} = Create Resource ${iserver} ${container} ${rt_container} ${attr},"rn":"Con3"
+ ${container3} = Location ${r}
Response Is Correct ${r}
# ----------- Delete the parent Container --------------
${r} = Delete Resource ${iserver} InCSE1/ConTop1
4.33 Delete Container with 1 child Container/1 contentInstance
[Documentation] Delete Container with 1 child Container/1 contentInstance
- ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you"
- ${r} = Create Resource ${iserver} InCSE1 ${rt_container} ${attr} Con1
- ${con} = Name ${r}
+ ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you","rn":"Con1"
+ ${r} = Create Resource ${iserver} InCSE1 ${rt_container} ${attr}
+ ${con} = Location ${r}
Response Is Correct ${r}
- ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you"
- ${r} = Create Resource ${iserver} ${con} ${rt_container} ${attr} Con2
- ${container} = Name ${r}
+ ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you","rn":"Con2"
+ ${r} = Create Resource ${iserver} ${con} ${rt_container} ${attr}
+ ${container} = Location ${r}
Response Is Correct ${r}
- ${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"101"
- ${r} = Create Resource ${iserver} ${container} ${rt_contentInstance} ${attr} conIn1
- ${name} = Name ${r}
+ ${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"101","rn":"conIn1"
+ ${r} = Create Resource ${iserver} ${container} ${rt_contentInstance} ${attr}
+ ${name} = Location ${r}
Response Is Correct ${r}
# ----------- Delete the parent Container --------------
${r} = Delete Resource ${iserver} InCSE1/Con1
4.34 Delete Container with 1 child Container/3 contentInsntace
[Documentation] Delete Container with 1 child Container/3 contentInsntace
- ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you"
- ${r} = Create Resource ${iserver} InCSE1 ${rt_container} ${attr} Con1
- ${con} = Name ${r}
+ ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you","rn":"Con1"
+ ${r} = Create Resource ${iserver} InCSE1 ${rt_container} ${attr}
+ ${con} = Location ${r}
Response Is Correct ${r}
- ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you"
- ${r} = Create Resource ${iserver} ${con} ${rt_container} ${attr} Con2
- ${container} = Name ${r}
+ ${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you","rn":"Con2"
+ ${r} = Create Resource ${iserver} ${con} ${rt_container} ${attr}
+ ${container} = Location ${r}
Response Is Correct ${r}
${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"101"
- ${r} = Create Resource ${iserver} ${container} ${rt_contentInstance} ${attr} conIn1
+ ${r} = Create Resource ${iserver} ${container} ${rt_contentInstance} ${attr},"rn":"conIn1"
Response Is Correct ${r}
- ${r} = Create Resource ${iserver} ${container} ${rt_contentInstance} ${attr} conIn2
+ ${r} = Create Resource ${iserver} ${container} ${rt_contentInstance} ${attr},"rn":"conIn2"
Response Is Correct ${r}
- ${r} = Create Resource ${iserver} ${container} ${rt_contentInstance} ${attr} conIn3
+ ${r} = Create Resource ${iserver} ${container} ${rt_contentInstance} ${attr},"rn":"conIn3"
Response Is Correct ${r}
# ----------- Delete the parent Container --------------
${r} = Delete Resource ${iserver} InCSE1/Con1
4.35 Delete Container with 3 child Container/9 contentInstance
[Documentation] Delete Container with 3 child Container/9 contentInstance
${attr} = Set Variable "cr":null,"mni":5,"mbs":15,"or":"http://hey/you"
- ${r} = Create Resource ${iserver} InCSE1 ${rt_container} ${attr} Con1
- ${con} = Name ${r}
+ ${r} = Create Resource ${iserver} InCSE1 ${rt_container} ${attr},"rn":"Con1"
+ ${con} = Location ${r}
Response Is Correct ${r}
- ${r} = Create Resource ${iserver} ${con} ${rt_container} ${attr} Con2
- ${container1} = Name ${r}
+ ${r} = Create Resource ${iserver} ${con} ${rt_container} ${attr},"rn":"Con2"
+ ${container1} = Location ${r}
Response Is Correct ${r}
- ${r} = Create Resource ${iserver} ${con} ${rt_container} ${attr} Con3
- ${container2} = Name ${r}
+ ${r} = Create Resource ${iserver} ${con} ${rt_container} ${attr},"rn":"Con3"
+ ${container2} = Location ${r}
Response Is Correct ${r}
- ${r} = Create Resource ${iserver} ${con} ${rt_container} ${attr} Con4
- ${container3} = Name ${r}
+ ${r} = Create Resource ${iserver} ${con} ${rt_container} ${attr},"rn":"Con4"
+ ${container3} = Location ${r}
Response Is Correct ${r}
${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"101"
: FOR ${conName} IN conIn1 conIn2 conIn3
- \ ${r} = Create Resource ${iserver} ${container1} ${rt_contentInstance} ${attr}
- \ ... ${conName}
+ \ ${r} = Create Resource ${iserver} ${container1} ${rt_contentInstance} ${attr},"rn":${conName}
\ Response Is Correct ${r}
: FOR ${conName} IN conIn1 conIn2 conIn3
- \ ${r} = Create Resource ${iserver} ${container2} ${rt_contentInstance} ${attr}
- \ ... ${conName}
+ \ ${r} = Create Resource ${iserver} ${container2} ${rt_contentInstance} ${attr},"rn":${conName}
\ Response Is Correct ${r}
: FOR ${conName} IN conIn1 conIn2 conIn3
- \ ${r} = Create Resource ${iserver} ${container3} ${rt_contentInstance} ${attr}
- \ ... ${conName}
+ \ ${r} = Create Resource ${iserver} ${container3} ${rt_contentInstance} ${attr},"rn":${conName}
\ Response Is Correct ${r}
# ----------- Delete the parent Container --------------
${r} = Delete Resource ${iserver} InCSE1/Con1
*** Keywords ***
Response Is Correct
[Arguments] ${r}
- ${status_code} = Status Code ${r}
- Should Be True 199 < ${status_code} < 299
${text} = Text ${r}
LOG ${text}
${json} = Json ${r}
LOG ${json}
+ ${status_code} = Status Code ${r}
+ Should Be True 199 < ${status_code} < 299
+
Cannot Retrieve Error
[Arguments] ${uri}
1.1 rcn is legal in create
[Documentation] rcn=1, 2, 3, 0 is legal
- ${attr} = Set Variable "aei":"ODL","api":"jb","apn":"jb2","or":"http://hey/you"
+ ${attr} = Set Variable "api":"jb","apn":"jb2","or":"http://hey/you","rr":true
: FOR ${rcn} IN \ 1 2 3
... 0
\ ${r} = Create Resource With Command ${iserver} InCSE1 ${rt_ae} rcn=${rcn}
\ ... ${attr}
- #add check reponse here in the next step, seperate them
1.2 rcn is illegal in create
[Documentation] rcn=4, 5, 6, 7 is illegal
- ${attr} = Set Variable "aei":"ODL","api":"jb","apn":"jb2","or":"http://hey/you"
+ ${attr} = Set Variable "api":"jb","apn":"jb2","or":"http://hey/you","rr":true
: FOR ${rcn} IN 4 5 6 7
\ ${error} = Run Keyword And Expect Error * Create Resource With Command ${iserver} InCSE1
\ ... ${rt_ae} rcn=${rcn} ${attr}
\ Should Contain ${error} rcn
2.1 rcn is legal in update
- [Documentation] rcn=1, 4, 0/ null is legal
+ [Documentation] rcn=1, 0/ null is legal
${attr} = Set Variable "or":"http://hey/you"
- : FOR ${rcn} IN \ 0 1 4
+ : FOR ${rcn} IN \ 0 1 5
+ ... 6
\ ${r} = Update Resource With Command ${iserver} InCSE1/AE1 ${rt_ae} rcn=${rcn}
\ ... ${attr}
2.2 rcn is illegal in update
- [Documentation] rcn=2, 3, 5, 6, 7 is illegal
+ [Documentation] rcn=2, 3, 7 is illegal
${attr} = Set Variable "or":"http://hey/you"
: FOR ${rcn} IN 2 3 4 7
\ ${error} = Run Keyword And Expect Error * Update Resource With Command ${iserver} InCSE1/AE1
\ Should Contain ${error} rcn
4.2 rcn is illegal in delete
- [Documentation] rcn=4, 5, 6, 7 is illegal
+ [Documentation] rcn=2, 3, 4, 5, 6, 7 is illegal
${attr} = Set Variable "or":"http://hey/you"
- : FOR ${rcn} IN 2 3 4 5
- ... 6 7
+ : FOR ${rcn} IN 2 3 4 7
\ ${error} = Run Keyword And Expect Error * Delete Resource With Command ${iserver} InCSE1/AE1
\ ... rcn=${rcn}
\ Should Start with ${error} Cannot delete this resource [400]
1. createdBefore
${r} = Retrieve Resource With Command ${iserver} InCSE1/AE1 rcn=4&crb=20160612T033748Z
- ${count} = Get Length ${r.json()['ch']}
+ ${count} = Get Length ${r.json()['m2m:ae']['ch']}
Should Be Equal As Integers ${count} 2
2. createdAfter
${r} = Retrieve Resource With Command ${iserver} InCSE1/AE1 rcn=4&cra=20150612T033748Z
- ${count} = Get Length ${r.json()['ch']}
+ ${count} = Get Length ${r.json()['m2m:ae']['ch']}
Should Be Equal As Integers ${count} 2
3. modifiedSince
${r} = Retrieve Resource With Command ${iserver} InCSE1/AE1 rcn=4&ms=20150612T033748Z
- ${count} = Get Length ${r.json()['ch']}
+ ${count} = Get Length ${r.json()['m2m:ae']['ch']}
Should Be Equal As Integers ${count} 2
4. unmodifiedSince
${r} = Retrieve Resource With Command ${iserver} InCSE1/AE1 rcn=4&us=20160612T033748Z
- ${count} = Get Length ${r.json()['ch']}
+ ${count} = Get Length ${r.json()['m2m:ae']['ch']}
Should Be Equal As Integers ${count} 2
5. stateTagSmaller
${r} = Retrieve Resource With Command ${iserver} InCSE1/Container3 rcn=4&sts=3
${count} = Get Length ${r.json()['ch']}
- ${s} = Set Variable ${r.json()['ch']}
Should Be Equal As Integers ${count} 5
6. stateTagBigger
${r} = Retrieve Resource With Command ${iserver} InCSE1/Container3 rcn=4&stb=1
- ${count} = Get Length ${r.json()['ch']}
+
+ ${count} = Get Length ${r.json()['m2m:cnt']['ch']}
Should Be Equal As Integers ${count} 2
# 7. expireBefore
# 8. expireAfter
${r} = Retrieve Resource With Command ${iserver} InCSE1 rcn=4&rty=3&szb=5
${count} = Get Length ${r.json()['ch']}
Should Be Equal As Integers ${count} 1
- # 13. contentType
- # 14. limit
- # ${r} = Retrieve Resource With Command ${iserver} InCSE1 rcn=4&rty=3&lim=2
- # ${count} = Get Length ${r.json()['ch']}
- # Should Be Equal As Integers ${count} 2
- #15. attribute
- #16. filterUsage
- # different conditions shall use the "AND" logical operation;
- # same conditions shall use the "OR" logical operation.
+
+2.1 And Test - labels
+
+ ${r} = Retrieve Resource With Command ${iserver} InCSE1 fu=1&rcn=4&sts=4&lbl=contentInstanceUnderContainerContainer&lbl=underCSE
+ ${count} = Get Length ${r.json()}
+ Should Be Equal As Integers ${count} 6
*** Keywords ***
Connect And Create The Tree
[Documentation] Create a tree that contain AE/ container / contentInstance in different layers
${iserver} = Connect To Iotdm ${httphost} ${httpuser} ${httppass} http
- ${attr} = Set Variable "aei":"ODL","api":"jb","apn":"jb2","or":"http://hey/you"
- Create Resource ${iserver} InCSE1 ${rt_ae} ${attr} AE1
- Create Resource ${iserver} InCSE1 ${rt_ae} ${attr} AE2
- Create Resource ${iserver} InCSE1 ${rt_ae} ${attr} AE3
- ${attr} = Set Variable
- Create Resource ${iserver} InCSE1/AE1 ${rt_container} ${attr} Container1
- Create Resource ${iserver} InCSE1/AE1 ${rt_container} ${attr} Container2
+ ${attr} = Set Variable "api":"jb","apn":"jb2","or":"http://hey/you","rr":true
+ Create Resource ${iserver} InCSE1 ${rt_ae} ${attr},"rn":"AE1"
+ Create Resource ${iserver} InCSE1 ${rt_ae} ${attr},"rn":"AE2"
+ Create Resource ${iserver} InCSE1 ${rt_ae} ${attr},"rn":"AE3"
+ Create Resource ${iserver} InCSE1/AE1 ${rt_container} "rn":"Container1"
+ Create Resource ${iserver} InCSE1/AE1 ${rt_container} "rn":"Container2"
${attr} = Set Variable "cr":null,"mni":5,"mbs":150,"or":"http://hey/you","lbl":["underCSE"]
- Create Resource ${iserver} InCSE1 ${rt_container} ${attr} Container3
- Create Resource ${iserver} InCSE1 ${rt_container} ${attr} Container4
- Create Resource ${iserver} InCSE1 ${rt_container} ${attr} Container5
+ Create Resource ${iserver} InCSE1 ${rt_container} ${attr},"rn":"Container3"
+ Create Resource ${iserver} InCSE1 ${rt_container} ${attr},"rn":"Container4"
+ Create Resource ${iserver} InCSE1 ${rt_container} ${attr},"rn":"Container5"
${attr} = Set Variable "cr":null,"mni":5,"mbs":150,"or":"http://hey/you","lbl":["underAEContainer"]
- Create Resource ${iserver} InCSE1/AE1/Container1 ${rt_container} ${attr} Container6
+ Create Resource ${iserver} InCSE1/AE1/Container1 ${rt_container} ${attr},"rn":"Container6"
${attr} = Set Variable "cr":null,"mni":5,"mbs":150,"or":"http://hey/you","lbl":["underCSEContainer"]
- Create Resource ${iserver} InCSE1/Container3 ${rt_container} ${attr} Container7
- Create Resource ${iserver} InCSE1/Container3 ${rt_container} ${attr} Container8
- Create Resource ${iserver} InCSE1/Container3 ${rt_container} ${attr} Container9
+ Create Resource ${iserver} InCSE1/Container3 ${rt_container} ${attr},"rn":"Container7"
+ Create Resource ${iserver} InCSE1/Container3 ${rt_container} ${attr},"rn":"Container8"
+ Create Resource ${iserver} InCSE1/Container3 ${rt_container} ${attr},"rn":"Container9"
${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"102","lbl":["contentInstanceUnderAEContainer"]
- Create Resource ${iserver} InCSE1/AE1/Container1 ${rt_contentInstance} ${attr} conIn1
- Create Resource ${iserver} InCSE1/AE1/Container1 ${rt_contentInstance} ${attr} conIn2
+ Create Resource ${iserver} InCSE1/AE1/Container1 ${rt_contentInstance} ${attr},"rn":"conIn1"
+ Create Resource ${iserver} InCSE1/AE1/Container1 ${rt_contentInstance} ${attr},"rn":"conIn2"
${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"102","lbl":["contentInstanceUnderContainerContainer"]
- Create Resource ${iserver} InCSE1/Container3 ${rt_contentInstance} ${attr} conIn3
- Create Resource ${iserver} InCSE1/Container3 ${rt_contentInstance} ${attr} conIn4
- Create Resource ${iserver} InCSE1/Container3 ${rt_contentInstance} ${attr} conIn5
+ Create Resource ${iserver} InCSE1/Container3 ${rt_contentInstance} ${attr},"rn":"conIn3"
+ Create Resource ${iserver} InCSE1/Container3 ${rt_contentInstance} ${attr},"rn":"conIn4"
+ Create Resource ${iserver} InCSE1/Container3 ${rt_contentInstance} ${attr},"rn":"conIn5"
${attr} = Set Variable "cnf": "1","or": "http://hey/you","con":"102","lbl":["contentInstanceUnderContainer"]
- Create Resource ${iserver} InCSE1/Container4 ${rt_contentInstance} ${attr} conIn6
- Create Resource ${iserver} InCSE1/Container4 ${rt_contentInstance} ${attr} conIn7
- Create Resource ${iserver} InCSE1/Container4 ${rt_contentInstance} ${attr} conIn8
+ Create Resource ${iserver} InCSE1/Container4 ${rt_contentInstance} ${attr},"rn":"conIn6"
+ Create Resource ${iserver} InCSE1/Container4 ${rt_contentInstance} ${attr},"rn":"conIn7"
+ Create Resource ${iserver} InCSE1/Container4 ${rt_contentInstance} ${attr},"rn":"conIn8"
--- /dev/null
+*** Settings ***
+Suite Teardown Kill The Tree ${ODL_SYSTEM_IP} InCSE1 admin admin
+Library ../../../libraries/criotdm.py
+Library Collections
+
+*** Variables ***
+${httphost} ${ODL_SYSTEM_IP}
+${httpuser} admin
+${httppass} admin
+${rt_ae} 2
+${rt_container} 3
+${rt_contentInstance} 4
+${rt_acp} 1
+
+*** Test Cases ***
+Set Suite Variable
+ [Documentation] set a suite variable ${iserver}
+ ${iserver} = Connect To Iotdm ${httphost} ${httpuser} ${httppass} http
+ Set Suite Variable ${iserver}
+ #==================================================
+ # Container Mandatory Attribute Test
+ #==================================================
+ # For Creation, there are no mandatory input attribute
+
+1.0 Test whether default ACP exist
+ Modify Headers Origin ${iserver} //iotsandbox.cisco.com:10000
+ ${r} = Retrieve Resource ${iserver} InCSE1/_defaultACP
+ ${text} = Text ${r}
+ LOG ${text}
+ ${status_code} = Status Code ${r}
+ Should Be True 199 < ${status_code} < 299
+
+1.1 Create ACP without context, test whether all the reponse mandatory attribtues are exist.
+ [Documentation] After Created, test whether all the mandatory attribtues are exist.
+ ${attr} = Set Variable "pv":{"acr":[{"acor" : ["111","222"],"acop":35},{"acor" : ["111","222"],"acop":35}]},"pvs":{"acr":[{"acor" : ["111","222"],"acop":7},{"acor" : ["111","222"],"acop":9}]},"rn":"Acp1"
+ ${r}= Create Resource ${iserver} InCSE1 ${rt_acp} ${attr}
+ ${status_code} = Status Code ${r}
+ Should Be Equal As Integers ${status_code} 201
+ ${text} = Text ${r}
+ Should Contain ${text} "ct": "lt": "ty"
+ Should Contain ${text} "ri": "pi":
+
+1.2 Create ACP with valid acip(ipv4)
+ [Documentation] After Created, test whether all the mandatory attribtues are exist.
+ ${attr} = Set Variable "pv":{"acr":[{"acor" : ["111","222"],"acop":35,"acco":[{"acip":{"ipv4":["127.0.0.1"]}}]},{"acor" : ["111","222"],"acop":35}]},"pvs":{"acr":[{"acor" : ["111","222"],"acop":7},{"acor" : ["111","222"],"acop":9}]},"rn":"Acp2"
+ ${r}= Create Resource ${iserver} InCSE1 ${rt_acp} ${attr}
+ ${status_code} = Status Code ${r}
+ Should Be Equal As Integers ${status_code} 201
+ ${text} = Text ${r}
+ Should Contain ${text} "ct": "lt": "ty"
+ Should Contain ${text} "ri": "pi":
+
+1.3 Create ACP with invalid acip(ipv4)
+ [documentation] input a invalid ipv4 address and expect error
+ ${attr} = Set Variable "pv":{"acr":[{"acor" : ["111","222"],"acop":35,"acco":[{"acip":{"ipv4":["127.0.01"]}}]},{"acor" : ["111","222"],"acop":35}]},"pvs":{"acr":[{"acor" : ["111","222"],"acop":7},{"acor" : ["111","222"],"acop":9}]},"rn":"Acp3"
+ ${error}= Run Keyword And Expect Error * Create Resource ${iserver} InCSE1 ${rt_acp} ${attr}
+ Should Start with ${error} Cannot create this resource [400]
+ Should Contain ${error} not a valid Ipv4 address
+
+1.4 Create ACP with valid acip(ipv6)
+ [Documentation] After Created, test whether all the mandatory attribtues are exist.
+ ${attr} = Set Variable "pv":{"acr":[{"acor" : ["111","222"],"acop":35,"acco":[{"acip":{"ipv6":["2001:db8:0:0:0:ff00:42:8329"]}}]},{"acor" : ["111","222"],"acop":35}]},"pvs":{"acr":[{"acor" : ["111","222"],"acop":7},{"acor" : ["111","222"],"acop":9}]},"rn":"Acp4"
+ ${r}= Create Resource ${iserver} InCSE1 ${rt_acp} ${attr}
+ ${status_code} = Status Code ${r}
+ Should Be Equal As Integers ${status_code} 201
+ ${text} = Text ${r}
+ Should Contain ${text} "ct": "lt": "ty"
+ Should Contain ${text} "ri": "pi":
+
+1.5 Create ACP with invalid acip(ipv6)
+ [documentation] input a invalid Ipv6 address and expect error
+ ${attr} = Set Variable "pv":{"acr":[{"acor" : ["111","222"],"acop":35,"acco":[{"acip":{"ipv6":["2001:db8:0:0:0:ff00:42"]}}]},{"acor" : ["111","222"],"acop":35}]},"pvs":{"acr":[{"acor" : ["111","222"],"acop":7},{"acor" : ["111","222"],"acop":9}]},"rn":"Acp3"
+ ${error}= Run Keyword And Expect Error * Create Resource ${iserver} InCSE1 ${rt_acp} ${attr}
+ Should Start with ${error} Cannot create this resource [400]
+ Should Contain ${error} not a valid Ipv6 address
+
+
+*** Keywords ***
+Connect And Create Resource
+ [Arguments] ${targetURI} ${resoutceType} ${attr} ${resourceName}=${EMPTY}
+ ${iserver} = Connect To Iotdm ${httphost} ${httpuser} ${httppass} http
+ ${r} = Create Resource ${iserver} ${targetURI} ${resoutceType} ${attr} ${resourceName}
+ ${status_code} = Status Code ${r}
+ Should Be Equal As Integers ${status_code} 201
+
+Response Is Correct
+ [Arguments] ${r}
+ ${text} = Text ${r}
+ LOG ${text}
+ ${json} = Json ${r}
+ LOG ${json}
+ ${status_code} = Status Code ${r}
+ Should Be True 199 < ${status_code} < 299
\ No newline at end of file
--- /dev/null
+*** Settings ***
+Suite Teardown Kill The Tree ${ODL_SYSTEM_IP} InCSE1 admin admin
+Library ../../../libraries/criotdm.py
+Library Collections
+
+*** Variables ***
+${httphost} ${ODL_SYSTEM_IP}
+${httpuser} admin
+${httppass} admin
+${rt_ae} 2
+${rt_container} 3
+${rt_contentInstance} 4
+${rt_acp} 1
+${rt_node} 14
+
+*** Test Cases ***
+Set Suite Variable
+ [Documentation] set a suite variable ${iserver}
+ ${iserver} = Connect To Iotdm ${httphost} ${httpuser} ${httppass} http
+ Set Suite Variable ${iserver}
+ #==================================================
+ # Container Mandatory Attribute Test
+ #==================================================
+ # For Creation, there are no mandatory input attribute
+
+1.1 After Created, test whether all the mandatory attribtues are exist.
+ [Documentation] After Created, test whether all the mandatory attribtues are exist.
+ ${attr} = Set Variable "rn":"Container1"
+ ${r}= Create Resource ${iserver} InCSE1 ${rt_container} ${attr}
+ ${container} = Location ${r}
+ ${status_code} = Status Code ${r}
+ Should Be Equal As Integers ${status_code} 201
+ ${text} = Text ${r}
+ Should Contain ${text} "ri": "rn": "cni"
+ Should Contain ${text} "lt": "pi": "st":
+ Should Contain ${text} "ct": "rty":3 "cbs"
+ Should Not Contain S{text} "lbl" "creator" "or"
\ No newline at end of file