Example #1
0
  @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()));
  }
Example #2
0
 /**
  * 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;
 }
Example #3
0
 @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()));
 }
Example #4
0
  @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());
  }
Example #5
0
  @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());
  }