/** * Initialize the given telemetry with the Docker context. * @param telemetry A Telemetry to initialize. */ @Override public void initialize(Telemetry telemetry) { DockerContext dockerContext; if (!sdkInfoFileWritten) { synchronized (this) { if (!sdkInfoFileWritten) { writeSDKInfoFile(); sdkInfoFileWritten = true; } } } if (dockerContextPoller.isCompleted() && (dockerContext = dockerContextPoller.getDockerContext()) != null) { TelemetryContext context = telemetry.getContext(); // We always set the device ID, since by default it is represented by a GUID inside Docker container. String containerName = dockerContext.getProperties().get(Constants.DOCKER_CONTAINER_NAME_PROPERTY_KEY); context.getDevice().setId(containerName); // If telemetry already initialized with Docker properties, we don't overwrite it. if (!LocalStringsUtils.isNullOrEmpty(context.getProperties().get(Constants.DOCKER_HOST_PROPERTY_KEY))) { return; } ConcurrentMap<String, String> properties = context.getProperties(); properties.putAll(dockerContext.getProperties()); } }
@Override public void initialize(final TelemetryContext context) { if (!isInitialized) { logger.info("Starting TelemetryContext initialization"); initializeInstrumentationKey(context, isDeveloperMode); initializeProperties(context.getProperties()); initializeUser(context.getUser()); initializeComponent(context.getComponent()); initializeDevice(context.getDevice()); initializeTags(context.getTags()); initializeSession(context.getSession()); isInitialized = true; logger.info("Ending TelemetryContext initialization"); } }
@Override public void initialize(TelemetryContext context) { DeviceContext device = context.getDevice(); device.setOperatingSystem(DeviceInfo.getOperatingSystem()); device.setOperatingSystemVersion(DeviceInfo.getOperatingSystemVersion()); device.setId(DeviceInfo.getHostName()); device.setLocale(DeviceInfo.getLocale()); } }
@Test public void testTelemetryInitializedWhenContextAvailable() { initializerUnderTest.initialize(telemetry); Map<String, String> properties = telemetry.getProperties(); Assert.assertEquals(DEFAULT_CONTAINER_NAME, telemetry.getContext().getDevice().getId()); Assert.assertEquals(DEFAULT_IMAGE, properties.get(Constants.DOCKER_IMAGE_PROPERTY_KEY)); Assert.assertEquals(DEFAULT_CONTAINER_NAME, properties.get(Constants.DOCKER_CONTAINER_NAME_PROPERTY_KEY)); Assert.assertEquals(DEFAULT_CONTAINER_ID, properties.get(Constants.DOCKER_CONTAINER_ID_PROPERTY_KEY)); }
@Test public void testWhenTelemetryPropertiesAlreadyPopulatedDeviceIdStillSet() { final String host = "predefined_host"; telemetry.getProperties().put(Constants.DOCKER_HOST_PROPERTY_KEY, host); initializerUnderTest.initialize(telemetry); Assert.assertEquals(host, telemetry.getProperties().get(Constants.DOCKER_HOST_PROPERTY_KEY)); Assert.assertEquals(DEFAULT_CONTAINER_NAME, telemetry.getContext().getDevice().getId()); }