/** * Checks if the log is compatible with One Collector. * * @param log The log. * @return true if the log is compatible with One Collector, false otherwise. */ private static boolean isOneCollectorCompatible(@NonNull Log log) { return !(log instanceof CommonSchemaLog) && !log.getTransmissionTargetTokens().isEmpty(); }
Set<String> apiKeys = new LinkedHashSet<>(); for (Log log : logContainer.getLogs()) { apiKeys.addAll(log.getTransmissionTargetTokens());
@Test public void validateCommonSchemaLogs() { /* Setup mocks. */ Channel channel = mock(Channel.class); LogSerializer logSerializer = mock(LogSerializer.class); when(logSerializer.toCommonSchemaLog(any(Log.class))).thenThrow(new IllegalArgumentException()); Log log = mock(Log.class); when(log.getTransmissionTargetTokens()).thenReturn(Collections.singleton("token")); /* Init listener. */ OneCollectorChannelListener listener = new OneCollectorChannelListener(mock(Context.class), channel, logSerializer, UUIDUtils.randomUUID()); listener.onPreparedLog(log, TEST_GROUP, DEFAULTS); /* Verify conversion attempted. */ verify(logSerializer).toCommonSchemaLog(any(Log.class)); /* Verify no enqueuing as the log was invalid. */ verify(channel, never()).enqueue(any(Log.class), anyString(), anyInt()); }
@Override public Collection<CommonSchemaLog> toCommonSchemaLogs(Log log) { Collection<CommonSchemaLog> commonSchemaLogs = new LinkedList<>(); for (String transmissionTarget : log.getTransmissionTargetTokens()) { /* Part A common fields. */ CommonSchemaEventLog commonSchemaEventLog = new CommonSchemaEventLog(); /* Event name goes to Part A. */ EventLog eventLog = (EventLog) log; PartAUtils.setName(commonSchemaEventLog, eventLog.getName()); /* Add common Part A fields. */ PartAUtils.addPartAFromLog(log, commonSchemaEventLog, transmissionTarget); /* Part B, C and Part A metadata. */ CommonSchemaDataUtils.addCommonSchemaData(eventLog.getTypedProperties(), commonSchemaEventLog); commonSchemaLogs.add(commonSchemaEventLog); /* Copy tag. */ commonSchemaEventLog.setTag(log.getTag()); } return commonSchemaLogs; } }
@Test public void shouldFilterAppCenterLog() { Channel channel = mock(Channel.class); OneCollectorChannelListener listener = new OneCollectorChannelListener(mock(Context.class), channel, mock(LogSerializer.class), UUIDUtils.randomUUID()); /* App center log with no transmission target must not be filtered. */ Log log = mock(Log.class); assertFalse(listener.shouldFilter(log)); /* App center log with transmission target must be filtered. */ when(log.getTransmissionTargetTokens()).thenReturn(new HashSet<>(Collections.singletonList("token"))); assertTrue(listener.shouldFilter(log)); /* Common schema logs never filtered out by this listener if no validation. */ assertFalse(listener.shouldFilter(mock(CommonSchemaLog.class))); }
when(log.getTransmissionTargetTokens()).thenReturn(Collections.singleton(targetToken)); channel.enqueue(log, TEST_GROUP, Flags.DEFAULTS);
when(log.getTransmissionTargetTokens()).thenReturn(Collections.singleton(targetToken)); channel.enqueue(log, TEST_GROUP, Flags.DEFAULTS); when(otherLog.getTransmissionTargetTokens()).thenReturn(Collections.singleton("iKey2-apiKey2")); channel.enqueue(otherLog, TEST_GROUP, Flags.DEFAULTS); verify(ingestion).sendAsync(anyString(), any(UUID.class), any(LogContainer.class), any(ServiceCallback.class));
throw new PersistenceException("Log is larger than " + PAYLOAD_MAX_SIZE + " bytes, cannot send to OneCollector."); targetToken = log.getTransmissionTargetTokens().iterator().next(); targetKey = PartAUtils.getTargetKey(targetToken); targetToken = CryptoUtils.getInstance(mContext).encrypt(targetToken);
Iterator<String> targetKeys = log.getTransmissionTargetTokens().iterator(); String targetKey = targetKeys.hasNext() ? PartAUtils.getTargetKey(targetKeys.next()) : null; if (groupState.mPausedTargetKeys.contains(targetKey)) {
when(originalLog.getTransmissionTargetTokens()).thenReturn(new HashSet<>(Collections.singletonList("t1"))); when(originalLog.getTransmissionTargetTokens()).thenReturn(new HashSet<>(Collections.singletonList("t2"))); CommonSchemaLog log3 = new MockCommonSchemaLog(); log3.setIKey("t2");