/src/test/java/nl/bitbrains/nebu/common/topology/TestPhysicalRack.java

https://github.com/deltaforge/nebu-common-java · Java · 322 lines · 234 code · 47 blank · 41 comment · 4 complexity · ca52293a0c365084d20fba29cae0f19a MD5 · raw file

  1. package nl.bitbrains.nebu.common.topology;
  2. import java.util.ArrayList;
  3. import junitparams.JUnitParamsRunner;
  4. import junitparams.Parameters;
  5. import nl.bitbrains.nebu.common.topology.PhysicalDataCenter;
  6. import nl.bitbrains.nebu.common.topology.PhysicalHost;
  7. import nl.bitbrains.nebu.common.topology.PhysicalRack;
  8. import nl.bitbrains.nebu.common.topology.PhysicalRackBuilder;
  9. import nl.bitbrains.nebu.common.topology.PhysicalStore;
  10. import org.junit.Assert;
  11. import org.junit.Before;
  12. import org.junit.Test;
  13. import org.junit.runner.RunWith;
  14. import org.mockito.Mockito;
  15. /**
  16. * @author Jesse Donkervliet, Tim Hegeman, and Stefan Hugtenburg
  17. *
  18. */
  19. @RunWith(JUnitParamsRunner.class)
  20. public class TestPhysicalRack {
  21. private static final String rackID = "id";
  22. private static final String otherID = "other";
  23. private PhysicalRack rack;
  24. private PhysicalRack cloneRack;
  25. private PhysicalRack otherRack;
  26. @Before
  27. public void setUp() {
  28. this.rack = new PhysicalRackBuilder().withUuid(TestPhysicalRack.rackID).build();
  29. this.cloneRack = new PhysicalRackBuilder().withUuid(TestPhysicalRack.rackID).build();
  30. this.otherRack = new PhysicalRackBuilder().withUuid(TestPhysicalRack.otherID).build();
  31. }
  32. public static PhysicalHost mockCPU(final String identifier) {
  33. final PhysicalHost cpu = Mockito.mock(PhysicalHost.class);
  34. Mockito.when(cpu.getUniqueIdentifier()).thenReturn(identifier);
  35. return cpu;
  36. }
  37. public static PhysicalStore mockDisk(final String identifier) {
  38. final PhysicalStore store = Mockito.mock(PhysicalStore.class);
  39. Mockito.when(store.getUniqueIdentifier()).thenReturn(identifier);
  40. return store;
  41. }
  42. @Test
  43. public void testEmptyConstructor() {
  44. Assert.assertEquals(TestPhysicalRack.rackID, this.rack.getUniqueIdentifier());
  45. Assert.assertNotNull(this.rack.getCPUs());
  46. }
  47. @Test
  48. public void testIDIsRequired() {
  49. boolean caught = false;
  50. try {
  51. new PhysicalRackBuilder().build();
  52. } catch (final IllegalStateException e) {
  53. caught = true;
  54. }
  55. Assert.assertTrue(caught);
  56. }
  57. @Test
  58. public void testListConstructorWithNullList() {
  59. Assert.assertTrue(this.rack.getCPUs().isEmpty());
  60. }
  61. @Test
  62. public void testListConstructorWithNullEntry() {
  63. final ArrayList<PhysicalHost> cpuList = new ArrayList<PhysicalHost>();
  64. cpuList.add(null);
  65. final PhysicalRackBuilder builder = new PhysicalRackBuilder();
  66. builder.withUuid("Rack");
  67. boolean caught = false;
  68. try {
  69. builder.withHosts(cpuList);
  70. } catch (final IllegalArgumentException e) {
  71. caught = true;
  72. }
  73. // Then
  74. Assert.assertTrue(caught);
  75. }
  76. @Test
  77. public void testListConstructorWithCPUs() {
  78. final ArrayList<PhysicalHost> cpuList = new ArrayList<PhysicalHost>();
  79. final PhysicalHost mockedCpu = TestPhysicalRack.mockCPU("CPU_A");
  80. cpuList.add(mockedCpu);
  81. // When
  82. final PhysicalRack rack = new PhysicalRackBuilder().withHosts(cpuList).withUuid("Rack")
  83. .build();
  84. // Then
  85. Assert.assertArrayEquals(cpuList.toArray(), rack.getCPUs().toArray());
  86. }
  87. @Test
  88. public void testAddNullCPU() {
  89. // When
  90. this.rack.addCPU(null);
  91. // Then
  92. Assert.assertTrue(this.rack.getCPUs().isEmpty());
  93. }
  94. @Test
  95. public void testAddNewCPU() {
  96. final PhysicalHost mockedCpu = TestPhysicalRack.mockCPU("CPU_A");
  97. // When
  98. this.rack.addCPU(mockedCpu);
  99. // Then
  100. Assert.assertTrue(this.rack.getCPUs().contains(mockedCpu));
  101. }
  102. @Test
  103. public void testAddExistingCPU() {
  104. final PhysicalHost mockedCpu = TestPhysicalRack.mockCPU("CPU_A");
  105. final ArrayList<PhysicalHost> cpuList = new ArrayList<PhysicalHost>();
  106. cpuList.add(mockedCpu);
  107. // When
  108. final PhysicalRack rack = new PhysicalRackBuilder().withHosts(cpuList).withUuid("Rack")
  109. .build();
  110. // When
  111. rack.addCPU(mockedCpu);
  112. // Then
  113. Assert.assertArrayEquals(cpuList.toArray(), rack.getCPUs().toArray());
  114. }
  115. @Test
  116. public void testRemoveNullCPU() {
  117. final PhysicalHost mockedCpu = TestPhysicalRack.mockCPU("CPU_A");
  118. final ArrayList<PhysicalHost> cpuList = new ArrayList<PhysicalHost>();
  119. cpuList.add(mockedCpu);
  120. // When
  121. final PhysicalRack rack = new PhysicalRackBuilder().withHosts(cpuList).withUuid("Rack")
  122. .build();
  123. // When
  124. rack.removeCPU(null);
  125. // Then
  126. Assert.assertArrayEquals(cpuList.toArray(), rack.getCPUs().toArray());
  127. }
  128. @Test
  129. public void testRemoveExistingCPU() {
  130. final PhysicalHost mockedCpu = TestPhysicalRack.mockCPU("CPU_A");
  131. final ArrayList<PhysicalHost> cpuList = new ArrayList<PhysicalHost>();
  132. cpuList.add(mockedCpu);
  133. // When
  134. final PhysicalRack rack = new PhysicalRackBuilder().withHosts(cpuList).withUuid("Rack")
  135. .build();
  136. // When
  137. rack.removeCPU(mockedCpu);
  138. // Then
  139. Assert.assertFalse(rack.getCPUs().contains(mockedCpu));
  140. }
  141. @Test
  142. public void testRemoveNonExistingCPU() {
  143. final PhysicalHost mockedCpu = TestPhysicalRack.mockCPU("CPU_A");
  144. final PhysicalHost newCpu = TestPhysicalRack.mockCPU("CPU_B");
  145. final ArrayList<PhysicalHost> cpuList = new ArrayList<PhysicalHost>();
  146. cpuList.add(mockedCpu);
  147. // When
  148. final PhysicalRack rack = new PhysicalRackBuilder().withHosts(cpuList).withUuid("Rack")
  149. .build();
  150. // When
  151. rack.removeCPU(newCpu);
  152. // Then
  153. Assert.assertArrayEquals(cpuList.toArray(), rack.getCPUs().toArray());
  154. }
  155. @Test
  156. public void testAddNullDisk() {
  157. // When
  158. this.rack.addDisk(null);
  159. // Then
  160. Assert.assertTrue(this.rack.getDisks().isEmpty());
  161. }
  162. @Test
  163. public void testAddNewDisk() {
  164. final PhysicalStore mockedDisk = TestPhysicalRack.mockDisk("Disk_A");
  165. // When
  166. this.rack.addDisk(mockedDisk);
  167. // Then
  168. Assert.assertTrue(this.rack.getDisks().contains(mockedDisk));
  169. }
  170. @Test
  171. public void testAddExistingDisk() {
  172. final PhysicalStore mockedDisk = TestPhysicalRack.mockDisk("Disk_A");
  173. final ArrayList<PhysicalStore> DiskList = new ArrayList<PhysicalStore>();
  174. DiskList.add(mockedDisk);
  175. // When
  176. final PhysicalRack rack = new PhysicalRackBuilder().withDisks(DiskList).withUuid("Rack")
  177. .build();
  178. // When
  179. rack.addDisk(mockedDisk);
  180. // Then
  181. Assert.assertArrayEquals(DiskList.toArray(), rack.getDisks().toArray());
  182. }
  183. @Test
  184. public void testRemoveNullDisk() {
  185. final PhysicalStore mockedDisk = TestPhysicalRack.mockDisk("Disk_A");
  186. final ArrayList<PhysicalStore> DiskList = new ArrayList<PhysicalStore>();
  187. DiskList.add(mockedDisk);
  188. // When
  189. final PhysicalRack rack = new PhysicalRackBuilder().withDisks(DiskList).withUuid("Rack")
  190. .build();
  191. // When
  192. rack.removeDisk(null);
  193. // Then
  194. Assert.assertArrayEquals(DiskList.toArray(), rack.getDisks().toArray());
  195. }
  196. @Test
  197. public void testRemoveExistingDisk() {
  198. final PhysicalStore mockedDisk = TestPhysicalRack.mockDisk("Disk_A");
  199. final ArrayList<PhysicalStore> DiskList = new ArrayList<PhysicalStore>();
  200. DiskList.add(mockedDisk);
  201. // When
  202. final PhysicalRack rack = new PhysicalRackBuilder().withDisks(DiskList).withUuid("Rack")
  203. .build();
  204. // When
  205. rack.removeDisk(mockedDisk);
  206. // Then
  207. Assert.assertFalse(rack.getDisks().contains(mockedDisk));
  208. }
  209. @Test
  210. public void testRemoveNonExistingDisk() {
  211. final PhysicalStore mockedDisk = TestPhysicalRack.mockDisk("Disk_A");
  212. final PhysicalStore newDisk = TestPhysicalRack.mockDisk("Disk_B");
  213. final ArrayList<PhysicalStore> DiskList = new ArrayList<PhysicalStore>();
  214. DiskList.add(mockedDisk);
  215. // When
  216. final PhysicalRack rack = new PhysicalRackBuilder().withDisks(DiskList).withUuid("Rack")
  217. .build();
  218. // When
  219. rack.removeDisk(newDisk);
  220. // Then
  221. Assert.assertArrayEquals(DiskList.toArray(), rack.getDisks().toArray());
  222. }
  223. @Test
  224. public void testParent() {
  225. final PhysicalDataCenter datacenter = Mockito.mock(PhysicalDataCenter.class);
  226. // When
  227. this.rack.setParent(datacenter);
  228. // Then
  229. Assert.assertSame(datacenter, this.rack.getParent());
  230. }
  231. @Test
  232. public void testParentBuilder() {
  233. final PhysicalDataCenter datacenter = Mockito.mock(PhysicalDataCenter.class);
  234. this.rack = new PhysicalRackBuilder().withParent(datacenter)
  235. .withUuid(TestPhysicalRack.rackID).build();
  236. Assert.assertSame(datacenter, this.rack.getParent());
  237. }
  238. @SuppressWarnings("unused")
  239. private Object[] equalsParams() {
  240. this.setUp();
  241. return JUnitParamsRunner.$(JUnitParamsRunner.$(this.rack, null, false),
  242. JUnitParamsRunner.$(this.rack, this.cloneRack, true),
  243. JUnitParamsRunner.$(this.cloneRack, this.rack, true),
  244. JUnitParamsRunner.$(this.rack, this.otherRack, false),
  245. JUnitParamsRunner.$(this.rack, 1, false),
  246. JUnitParamsRunner.$(this.rack,
  247. this.rack.getUniqueIdentifier(),
  248. false));
  249. }
  250. @SuppressWarnings("unused")
  251. private Object[] hashCodeParams() {
  252. this.setUp();
  253. return JUnitParamsRunner.$(JUnitParamsRunner.$(this.rack, this.cloneRack, true),
  254. JUnitParamsRunner.$(this.rack, this.rack, true),
  255. JUnitParamsRunner.$(this.rack, this.otherRack, false));
  256. }
  257. @Test
  258. @Parameters(method = "equalsParams")
  259. public void equalsTest(final Object a, final Object b, final boolean result) {
  260. if (result) {
  261. Assert.assertEquals(a, b);
  262. } else {
  263. Assert.assertNotEquals(a, b);
  264. }
  265. }
  266. @Test
  267. @Parameters(method = "hashCodeParams")
  268. public void hashCodeTest(final Object a, final Object b, final boolean result) {
  269. if (result) {
  270. Assert.assertEquals(a.hashCode(), b.hashCode());
  271. } else {
  272. Assert.assertNotEquals(a.hashCode(), b.hashCode());
  273. }
  274. }
  275. }