| /* |
| * Copyright 2016-present Open Networking Foundation |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.onosproject.store.key.impl; |
| |
| import org.junit.After; |
| import org.junit.Before; |
| import org.junit.Test; |
| import org.onosproject.net.key.DeviceKey; |
| import org.onosproject.net.key.DeviceKeyId; |
| import org.onosproject.store.service.TestStorageService; |
| |
| import java.util.Collection; |
| |
| import static org.junit.Assert.*; |
| |
| /** |
| * Test class for DistributedDeviceKeyStore. |
| */ |
| public class DistributedDeviceKeyStoreTest { |
| private DistributedDeviceKeyStore deviceKeyStore; |
| |
| final String deviceKeyIdValue = "DeviceKeyId"; |
| final String deviceKeyLabel = "DeviceKeyLabel"; |
| final String deviceKeyLabel2 = "DeviceKeyLabel2"; |
| final String deviceKeySnmpName = "DeviceKeySnmpName"; |
| |
| /** |
| * Sets up the device key store and the storage service test harness. |
| */ |
| @Before |
| public void setUp() { |
| deviceKeyStore = new DistributedDeviceKeyStore(); |
| deviceKeyStore.storageService = new TestStorageService(); |
| deviceKeyStore.setDelegate(event -> { |
| }); |
| deviceKeyStore.activate(); |
| } |
| |
| /** |
| * Tears down the device key store. |
| */ |
| @After |
| public void tearDown() { |
| deviceKeyStore.deactivate(); |
| } |
| |
| /** |
| * Tests adding, query and removal of a device key. |
| */ |
| @Test(expected = NullPointerException.class) |
| public void testAddNullKey() { |
| deviceKeyStore.createOrUpdateDeviceKey(null); |
| } |
| |
| /** |
| * Tests adding a device key to the store. This also tests the device key store |
| * query methods. |
| */ |
| @Test |
| public void testAddKey() { |
| DeviceKeyId deviceKeyId = DeviceKeyId.deviceKeyId(deviceKeyIdValue); |
| |
| DeviceKey deviceKey = DeviceKey.createDeviceKeyUsingCommunityName(deviceKeyId, |
| deviceKeyLabel, deviceKeySnmpName); |
| |
| // Test to make sure that the device key store is empty |
| Collection<DeviceKey> deviceKeys = deviceKeyStore.getDeviceKeys(); |
| assertTrue("The device key set should be empty.", deviceKeys.isEmpty()); |
| |
| // Add the new device key to the store |
| deviceKeyStore.createOrUpdateDeviceKey(deviceKey); |
| |
| // Test the getDeviceKeys method to make sure that the new device key exists |
| deviceKeys = deviceKeyStore.getDeviceKeys(); |
| assertEquals("There should be one device key in the set.", deviceKeys.size(), 1); |
| |
| // Test the getDeviceKey method using the device key unique identifier |
| deviceKey = deviceKeyStore.getDeviceKey(deviceKeyId); |
| assertEquals("There should be one device key in the set.", deviceKeys.size(), 1); |
| } |
| |
| /** |
| * Tests re-adding the same device key to the store but with a different label. |
| */ |
| @Test |
| public void testAddSameKey() { |
| DeviceKeyId deviceKeyId = DeviceKeyId.deviceKeyId(deviceKeyIdValue); |
| |
| DeviceKey deviceKey = DeviceKey.createDeviceKeyUsingCommunityName(deviceKeyId, |
| deviceKeyLabel, deviceKeySnmpName); |
| |
| // Add the first device key to the store |
| deviceKeyStore.createOrUpdateDeviceKey(deviceKey); |
| |
| // Test the getDeviceKeys method |
| Collection<DeviceKey> deviceKeys = deviceKeyStore.getDeviceKeys(); |
| assertEquals("There should be one device key in the set.", deviceKeys.size(), 1); |
| |
| // Now let's create a new device key with the same device key identifier as exists in the store. |
| DeviceKey deviceKey2 = DeviceKey.createDeviceKeyUsingCommunityName(deviceKeyId, |
| deviceKeyLabel2, deviceKeySnmpName); |
| |
| // Replace the new device key in the store |
| deviceKeyStore.createOrUpdateDeviceKey(deviceKey2); |
| |
| // Test the getDeviceKeys method to ensure that only 1 device key exists in the store. |
| deviceKeys = deviceKeyStore.getDeviceKeys(); |
| assertEquals("There should be one device key in the set.", deviceKeys.size(), 1); |
| |
| // Test the getDeviceKey method using the device key unique identifier |
| deviceKey = deviceKeyStore.getDeviceKey(deviceKeyId); |
| assertNotNull("The device key should not be null.", deviceKey); |
| assertEquals("The device key label should match.", deviceKeyLabel2, deviceKey.label()); |
| } |
| |
| /** |
| * Tests removal of a device key from the store using the device key identifier. |
| */ |
| @Test |
| public void testRemoveKey() { |
| DeviceKeyId deviceKeyId = DeviceKeyId.deviceKeyId(deviceKeyIdValue); |
| DeviceKey deviceKey = DeviceKey.createDeviceKeyUsingCommunityName(deviceKeyId, |
| deviceKeyLabel, deviceKeySnmpName); |
| // Add the new device key to the store |
| deviceKeyStore.createOrUpdateDeviceKey(deviceKey); |
| |
| // Remove the device key from the store |
| deviceKeyStore.deleteDeviceKey(deviceKeyId); |
| |
| // Validate that the device key was removed from the store by querying it. |
| deviceKey = deviceKeyStore.getDeviceKey(deviceKeyId); |
| assertNull("The device key set should be empty.", deviceKey); |
| } |
| } |