blob: 0c9623ef87e2b66a900034ab5470a9b9ad8d96ad [file] [log] [blame]
Yuta HIGUCHI24057822017-08-02 15:03:51 -07001/*
2 * Copyright 2017-present Open Networking Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.d.config;
17
Yuta HIGUCHI825401e2018-02-27 13:23:25 -080018import static org.hamcrest.Matchers.*;
Yuta HIGUCHI24057822017-08-02 15:03:51 -070019import static org.junit.Assert.*;
20import static org.onosproject.d.config.DeviceResourceIds.DCS_NAMESPACE;
Yuta HIGUCHI825401e2018-02-27 13:23:25 -080021import static org.onosproject.d.config.DeviceResourceIds.DEVICES_ID;
22import static org.onosproject.d.config.DeviceResourceIds.toResourceId;
23import static org.onosproject.d.config.ResourceIds.fromInstanceIdentifier;
Yuta HIGUCHI24057822017-08-02 15:03:51 -070024
25import org.junit.Test;
Yuta HIGUCHI825401e2018-02-27 13:23:25 -080026import org.onosproject.net.DeviceId;
Yuta HIGUCHI24057822017-08-02 15:03:51 -070027import org.onosproject.yang.model.ResourceId;
28
29public class ResourceIdsTest {
30
Yuta HIGUCHI5527e992017-08-08 18:11:17 -070031 static final ResourceId DEVICES = ResourceId.builder()
Yuta HIGUCHI24057822017-08-02 15:03:51 -070032 .addBranchPointSchema(DeviceResourceIds.ROOT_NAME, DCS_NAMESPACE)
33 .addBranchPointSchema(DeviceResourceIds.DEVICES_NAME, DCS_NAMESPACE)
34 .build();
35
36 @Test
Yuta HIGUCHI825401e2018-02-27 13:23:25 -080037 public void testFromInstanceIdentifier() {
38
39 ResourceId eth0 = ResourceId.builder()
40 .addBranchPointSchema("interfaces", "ietf-interfaces")
41 .addBranchPointSchema("interface", "ietf-interfaces")
42 .addKeyLeaf("name", "ietf-interfaces", "eth0")
43 .build();
44 assertThat(ResourceIds.fromInstanceIdentifier("/ietf-interfaces:interfaces/interface[name=\"eth0\"]"),
45 is(eth0));
46
47 assertThat("fromInstanceIdentifier return path relative to virtual root",
48 ResourceIds.fromInstanceIdentifier("/org.onosproject.dcs:devices"),
49 is(ResourceIds.relativize(ResourceIds.ROOT_ID, DEVICES_ID)));
50
51 assertThat(ResourceIds.prefixDcsRoot(
52 ResourceIds.fromInstanceIdentifier("/org.onosproject.dcs:devices")),
53 is(DEVICES_ID));
54
55 assertThat(ResourceIds.fromInstanceIdentifier("/"),
56 is(nullValue()));
57
58 DeviceId deviceId = DeviceId.deviceId("test:device-identifier");
59 assertThat(ResourceIds.prefixDcsRoot(
60 fromInstanceIdentifier("/org.onosproject.dcs:devices/device[device-id=\"test:device-identifier\"]")),
61 is(toResourceId(deviceId)));
62
63 }
64
65 @Test
66 public void testToInstanceIdentifier() {
67
68 assertThat(ResourceIds.toInstanceIdentifier(ResourceIds.ROOT_ID),
69 is("/"));
70 assertThat(ResourceIds.toInstanceIdentifier(DEVICES_ID),
71 is("/org.onosproject.dcs:devices"));
72
73 DeviceId deviceId = DeviceId.deviceId("test:device-identifier");
74 assertThat(ResourceIds.toInstanceIdentifier(toResourceId(deviceId)),
75 is("/org.onosproject.dcs:devices/device[device-id=\"test:device-identifier\"]"));
76
77 assertThat(ResourceIds.toInstanceIdentifier(ResourceIds.relativize(DEVICES_ID, toResourceId(deviceId))),
78 is("/org.onosproject.dcs:device[device-id=\"test:device-identifier\"]"));
79
80 ResourceId eth0 = ResourceId.builder()
81 .addBranchPointSchema("interfaces", "ietf-interfaces")
82 .addBranchPointSchema("interface", "ietf-interfaces")
83 .addKeyLeaf("name", "ietf-interfaces", "eth0")
84 .build();
85 assertThat(ResourceIds.toInstanceIdentifier(eth0),
86 is("/ietf-interfaces:interfaces/interface[name=\"eth0\"]"));
87
88
89 assertThat(ResourceIds.toInstanceIdentifier(ResourceIds.concat(toResourceId(deviceId), eth0)),
90 is("/org.onosproject.dcs:devices/device[device-id=\"test:device-identifier\"]"
91 + "/ietf-interfaces:interfaces/interface[name=\"eth0\"]"));
92 }
93
94 @Test
Yuta HIGUCHI24057822017-08-02 15:03:51 -070095 public void testConcat() {
96 ResourceId devices = ResourceId.builder()
97 .addBranchPointSchema(DeviceResourceIds.DEVICES_NAME,
98 DCS_NAMESPACE)
99 .build();
100
Yuta HIGUCHIe057dee2017-09-15 13:56:10 -0700101 assertEquals(DEVICES, ResourceIds.concat(ResourceIds.ROOT_ID, devices));
Yuta HIGUCHI24057822017-08-02 15:03:51 -0700102 }
103
104 @Test
105 public void testRelativize() {
Yuta HIGUCHIe057dee2017-09-15 13:56:10 -0700106 ResourceId relDevices = ResourceIds.relativize(ResourceIds.ROOT_ID, DEVICES);
Yuta HIGUCHI24057822017-08-02 15:03:51 -0700107 assertEquals(DeviceResourceIds.DEVICES_NAME,
108 relDevices.nodeKeys().get(0).schemaId().name());
109 assertEquals(DCS_NAMESPACE,
110 relDevices.nodeKeys().get(0).schemaId().namespace());
111 assertEquals(1, relDevices.nodeKeys().size());
112 }
113
114 @Test
115 public void testRelativizeEmpty() {
116 ResourceId relDevices = ResourceIds.relativize(DEVICES, DEVICES);
117 // equivalent of . in file path, expressed as ResourceId with empty
118 assertTrue(relDevices.nodeKeys().isEmpty());
119
120 }
121}