@Test public void updateProfileServiceTest() throws IOException { byte[] profile = baseAvroConverter.encode(ENDPOINT_PROFILE); RegisterProfileRequest request = new RegisterProfileRequest( application.getApplicationToken(), ENDPOINT_KEY, sdkToken, profile); EndpointProfileDto oldDto = profileService.registerProfile(request); Assert.assertEquals( baseAvroConverter.encodeToJson(ENDPOINT_PROFILE), oldDto.getClientProfileBody().replaceAll(" ", "")); byte[] newProfile = newAvroConverter.encode(NEW_ENDPOINT_PROFILE); UpdateProfileRequest updateRequest = new UpdateProfileRequest( application.getApplicationToken(), EndpointObjectHash.fromSha1(ENDPOINT_KEY), null, newProfile, newSdkToken); EndpointProfileDto newDto = profileService.updateProfile(updateRequest); Assert.assertNotNull(newDto); Assert.assertNotNull(newDto.getId()); Assert.assertEquals(oldDto.getId(), newDto.getId()); Assert.assertEquals( newAvroConverter.encodeToJson(NEW_ENDPOINT_PROFILE), newDto.getClientProfileBody().replaceAll(" ", "")); Assert.assertTrue( Arrays.equals(EndpointObjectHash.fromSha1(newProfile).getData(), newDto.getProfileHash())); }
/** * Generate log event. * * @param logEventPack the log event pack * @param header the header * @return the list * @throws IOException the io exception */ protected List<LogEventDto> generateLogEvent(LogEventPack logEventPack, RecordHeader header) throws IOException { LOG.debug( "Generate LogEventDto objects from LogEventPack [{}] and header [{}]", logEventPack, header); List<LogEventDto> events = new ArrayList<>(logEventPack.getEvents().size()); GenericAvroConverter<GenericRecord> eventConverter = getConverter(logEventPack.getLogSchema().getSchema()); GenericAvroConverter<GenericRecord> headerConverter = getConverter(header.getSchema().toString()); try { for (LogEvent logEvent : logEventPack.getEvents()) { LOG.debug("Convert log events [{}] to dto objects.", logEvent); if (logEvent == null | logEvent.getLogData() == null) { continue; } LOG.trace( "Avro record converter [{}] with log data [{}]", eventConverter, logEvent.getLogData()); GenericRecord decodedLog = eventConverter.decodeBinary(logEvent.getLogData()); LOG.trace("Avro header record converter [{}]", headerConverter); String encodedJsonLogHeader = headerConverter.encodeToJson(header); String encodedJsonLog = eventConverter.encodeToJson(decodedLog); events.add(new LogEventDto(encodedJsonLogHeader, encodedJsonLog)); } } catch (IOException e) { LOG.error("Unexpected IOException while decoding LogEvents", e); throw e; } return events; }
@Test public void registerProfileServiceTest() throws IOException { byte[] profile = baseAvroConverter.encode(ENDPOINT_PROFILE); RegisterProfileRequest request = new RegisterProfileRequest( application.getApplicationToken(), ENDPOINT_KEY, sdkToken, profile); EndpointProfileDto dto = profileService.registerProfile(request); Assert.assertNotNull(dto); Assert.assertNotNull(dto.getId()); Assert.assertTrue(Arrays.equals(ENDPOINT_KEY, dto.getEndpointKey())); Assert.assertTrue( Arrays.equals( EndpointObjectHash.fromSha1(ENDPOINT_KEY).getData(), dto.getEndpointKeyHash())); Assert.assertEquals( baseAvroConverter.encodeToJson(ENDPOINT_PROFILE), dto.getClientProfileBody().replaceAll(" ", "")); Assert.assertTrue( Arrays.equals(EndpointObjectHash.fromSha1(profile).getData(), dto.getProfileHash())); }
@Test public void testDeltaServiceSecondRequest() throws Exception { ConfigurationCacheEntry cacheEntry = deltaService.getConfiguration(APP_TOKEN, "EndpointId", endpointProfile); assertNotNull(cacheEntry); assertNotNull(cacheEntry.getConfiguration()); assertNotNull(cacheEntry.getDelta()); assertNotNull(cacheEntry.getHash()); assertNull(cacheEntry.getUserConfigurationHash()); GenericAvroConverter<GenericContainer> newConfConverter = new GenericAvroConverter<>(new Schema.Parser().parse(confSchema.getBaseSchema())); GenericContainer container = newConfConverter.decodeJson( OperationsServiceIT.getResourceAsString( OperationsServiceIT.BASE_DATA_UPDATED_LOCATION)); byte[] newConfData = newConfConverter.encodeToJsonBytes(container); ConfigurationDto newConfDto = new ConfigurationDto(); newConfDto.setEndpointGroupId(egAllId); newConfDto.setSchemaId(confSchema.getId()); newConfDto.setBody(new String(newConfData, UTF_8)); newConfDto = configurationService.saveConfiguration(newConfDto); configurationService.activateConfiguration(newConfDto.getId(), "test"); List<EndpointGroupStateDto> changes = new ArrayList<>(); changes.add(new EndpointGroupStateDto(egAllId, pfAllId, newConfDto.getId())); endpointProfile.setGroupState(changes); ConfigurationCacheEntry newCacheEntry = deltaService.getConfiguration(APP_TOKEN, "EndpointId", endpointProfile); assertNotNull(newCacheEntry); assertNotNull(newCacheEntry.getConfiguration()); assertNotNull(newCacheEntry.getDelta()); assertNotNull(newCacheEntry.getHash()); assertNull(newCacheEntry.getUserConfigurationHash()); assertNotEquals(cacheEntry.getHash(), newCacheEntry.getHash()); }
@Before public void beforeTest() throws IOException, DeltaCalculatorException, ControlServiceException { String dataSchema = OperationsServiceIT.getResourceAsString(OperationsServiceIT.DATA_SCHEMA_LOCATION); PROFILE_BYTES = avroConverter.encode(ENDPOINT_PROFILE); PROFILE_JSON = avroConverter.encodeToJson(ENDPOINT_PROFILE); tenant = new TenantDto(); tenant.setName(CUSTOMER_ID); tenant = userService.saveTenant(tenant); assertNotNull(tenant); assertNotNull(tenant.getId()); ApplicationDto applicationDto = new ApplicationDto(); applicationDto.setTenantId(tenant.getId()); applicationDto.setApplicationToken(APPLICATION_ID); applicationDto.setName(APPLICATION_NAME); applicationDto.setSequenceNumber(NEW_APPLICATION_SEQ_NUMBER); applicationDto = applicationService.saveApp(applicationDto); APP_TOKEN = applicationDto.getApplicationToken(); assertNotNull(applicationDto); assertNotNull(applicationDto.getId()); application = applicationService.findAppById(applicationDto.getId()); EndpointGroupDto groupAll = endpointService.findEndpointGroupsByAppId(application.getId()).get(0); CTLSchemaDto profileCtlSchema = new CTLSchemaDto(); CtlSchemaMetaInfoDto metaInfo = new CtlSchemaMetaInfoDto( BasicEndpointProfile.SCHEMA$.getFullName(), application.getTenantId(), application.getId()); profileCtlSchema.setMetaInfo(metaInfo); profileCtlSchema.setBody(BasicEndpointProfile.SCHEMA$.toString()); profileCtlSchema.setVersion(1); profileCtlSchema.setDependencySet(new HashSet<CTLSchemaDto>()); profileCtlSchema = ctlService.saveCtlSchema(profileCtlSchema); Schema schema = new Schema.Parser().parse(dataSchema); CTLSchemaDto confCtlSchema = new CTLSchemaDto(); CtlSchemaMetaInfoDto confMetaInfo = new CtlSchemaMetaInfoDto( schema.getFullName(), application.getTenantId(), application.getId()); confCtlSchema.setMetaInfo(confMetaInfo); confCtlSchema.setBody(schema.toString()); confCtlSchema.setVersion(CONF_SCHEMA_VERSION); confCtlSchema.setDependencySet(new HashSet<CTLSchemaDto>()); confCtlSchema = ctlService.saveCtlSchema(confCtlSchema); EndpointProfileSchemaDto profileSchemaObj = new EndpointProfileSchemaDto(); profileSchemaObj.setVersion(PROFILE_SCHEMA_VERSION); profileSchemaObj.setCtlSchemaId(profileCtlSchema.getId()); profileSchemaObj.setApplicationId(application.getId()); EndpointProfileSchemaDto profileSchemaDto = profileService.saveProfileSchema(profileSchemaObj); profileSchema = profileService.findProfileSchemaById(profileSchemaDto.getId()); EndpointGroupDto endpointGroup = new EndpointGroupDto(); endpointGroup.setApplicationId(application.getId()); endpointGroup.setName("Test group"); endpointGroup.setWeight(277); endpointGroup.setDescription("Test Description"); endpointGroup = endpointService.saveEndpointGroup(endpointGroup); ProfileFilterDto profileFilterObj = new ProfileFilterDto(); profileFilterObj.setApplicationId(application.getId()); profileFilterObj.setEndpointGroupId(endpointGroup.getId()); profileFilterObj.setBody("profileBody.contains(\"dummy\")"); profileFilterObj.setEndpointProfileSchemaId(profileSchema.getId()); profileFilter = profileService.saveProfileFilter(profileFilterObj); profileService.activateProfileFilter(profileFilter.getId(), null); confSchema = new ConfigurationSchemaDto(); confSchema.setApplicationId(application.getId()); confSchema.setVersion(CONF_SCHEMA_VERSION); confSchema.setCtlSchemaId(confCtlSchema.getId()); try { confSchema = configurationService.saveConfSchema(confSchema); } catch (IncorrectParameterException e) { Assert.fail("Can't generate schemas"); } Assert.assertNotNull(confSchema); Assert.assertNotNull(confSchema.getId()); egAllId = groupAll.getId(); pfAllId = profileFilter.getId(); ConfigurationDto confDto = configurationService.findConfigurationByEndpointGroupIdAndVersion( egAllId, CONF_SCHEMA_VERSION); cfAllId = confDto.getId(); endpointConfiguration = new EndpointConfigurationDto(); endpointConfiguration.setConfiguration(confDto.getBody().getBytes(UTF_8)); endpointConfiguration.setConfigurationHash( EndpointObjectHash.fromSha1(confDto.getBody()).getData()); endpointConfiguration = endpointService.saveEndpointConfiguration(endpointConfiguration); assertNotNull(endpointConfiguration); EndpointGroupStateDto egs = new EndpointGroupStateDto(); egs.setConfigurationId(cfAllId); egs.setEndpointGroupId(egAllId); egs.setProfileFilterId(pfAllId); endpointProfile = new EndpointProfileDto(); endpointProfile.setApplicationId(application.getId()); endpointProfile.setEndpointKeyHash(Base64Utils.decodeFromString("EndpointId")); endpointProfile.setClientProfileBody(PROFILE_JSON); endpointProfile.setProfileHash(EndpointObjectHash.fromSha1(PROFILE_BYTES).getData()); endpointProfile.setConfigurationHash(endpointConfiguration.getConfigurationHash()); endpointProfile.setConfigurationVersion(CONF_SCHEMA_VERSION); endpointProfile.setClientProfileVersion(PROFILE_VERSION); endpointProfile.setGroupState(Collections.singletonList(egs)); endpointProfile = endpointService.saveEndpointProfile(endpointProfile); assertNotNull(endpointProfile); assertNotNull(endpointProfile.getId()); }