@BeforeMethod public void initTestClass() throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException { runtimeInfo = new RuntimeInformation(idManager); runtimeInfo.log = LoggerFactory.getLogger(RuntimeInformation.class); // we have to replace the real runtimeBean by the mocked one, so that we don't retrieve the // info from the underlying JVM Field field = runtimeInfo.getClass().getDeclaredField("runtimeBean"); field.setAccessible(true); field.set(runtimeInfo, runtimeBean); }
@Test public void idNotAvailableTest() throws IdNotAvailableException { long uptime = 12345L; long sensorTypeIdent = 13L; when(runtimeBean.getUptime()).thenReturn(uptime); when(idManager.getPlatformId()).thenThrow(new IdNotAvailableException("expected")); when(idManager.getRegisteredSensorTypeId(sensorTypeIdent)) .thenThrow(new IdNotAvailableException("expected")); // there is no current data object available when(coreService.getPlatformSensorData(sensorTypeIdent)).thenReturn(null); runtimeInfo.update(coreService, sensorTypeIdent); ArgumentCaptor<SystemSensorData> sensorDataCaptor = ArgumentCaptor.forClass(SystemSensorData.class); verify(coreService, times(0)) .addPlatformSensorData(eq(sensorTypeIdent), sensorDataCaptor.capture()); }
@Test public void oneDataSet() throws IdNotAvailableException { long uptime = 12345L; long sensorTypeIdent = 13L; long platformIdent = 11L; when(runtimeBean.getUptime()).thenReturn(uptime); when(idManager.getPlatformId()).thenReturn(platformIdent); when(idManager.getRegisteredSensorTypeId(sensorTypeIdent)).thenReturn(sensorTypeIdent); // there is no current data object available when(coreService.getPlatformSensorData(sensorTypeIdent)).thenReturn(null); runtimeInfo.update(coreService, sensorTypeIdent); // -> The service must create a new one and add it to the storage // We use an argument capturer to further inspect the given argument. ArgumentCaptor<SystemSensorData> sensorDataCaptor = ArgumentCaptor.forClass(SystemSensorData.class); verify(coreService, times(1)) .addPlatformSensorData(eq(sensorTypeIdent), sensorDataCaptor.capture()); SystemSensorData sensorData = sensorDataCaptor.getValue(); assertThat(sensorData, is(instanceOf(RuntimeInformationData.class))); assertThat(sensorData.getPlatformIdent(), is(equalTo(platformIdent))); assertThat(sensorData.getSensorTypeIdent(), is(equalTo(sensorTypeIdent))); RuntimeInformationData runtimeData = (RuntimeInformationData) sensorData; assertThat(runtimeData.getCount(), is(equalTo(1))); // as there was only one data object min/max/total the values must be the // same assertThat(runtimeData.getMinUptime(), is(equalTo(uptime))); assertThat(runtimeData.getMaxUptime(), is(equalTo(uptime))); assertThat(runtimeData.getTotalUptime(), is(equalTo(uptime))); }