public void Setup() { config = new TestConfiguration(); clientProvider = Substitute.For <IHTTPClientProvider>(); timingProvider = Substitute.For <ITimingProvider>(); nonTerminalStateMock = Substitute.For <AbstractBeaconSendingState>(false); }
public void Setup() { logger = Substitute.For <ILogger>(); config = new TestConfiguration(); clientProvider = Substitute.For <IHTTPClientProvider>(); timingProvider = Substitute.For <ITimingProvider>(); }
protected OpenKit(ILogger logger, OpenKitConfiguration configuration, IHTTPClientProvider httpClientProvider, ITimingProvider timingProvider, IThreadIDProvider threadIDProvider) { if (logger.IsInfoEnabled) { //TODO: Use proper version information (incl. the build number) logger.Info(configuration.OpenKitType + " " + GetType().Name + " " + OpenKitConstants.DEFAULT_APPLICATION_VERSION + " instantiated"); } if (logger.IsDebugEnabled) { logger.Debug( "applicationName=" + configuration.ApplicationName + ", applicationID=" + configuration.ApplicationID + ", deviceID=" + configuration.DeviceID + ", endpointURL=" + configuration.EndpointURL ); } this.configuration = configuration; this.logger = logger; this.timingProvider = timingProvider; this.threadIDProvider = threadIDProvider; beaconCache = new BeaconCache(logger); beaconSender = new BeaconSender(logger, configuration, httpClientProvider, timingProvider); beaconCacheEvictor = new BeaconCacheEvictor(logger, beaconCache, configuration.BeaconCacheConfig, timingProvider); }
public void Setup() { currentTime = 1; newSessions = new List <SessionWrapper>(); openSessions = new List <SessionWrapper>(); finishedSessions = new List <SessionWrapper>(); // http client httpClient = Substitute.For <IHTTPClient>(); // provider timingProvider = Substitute.For <ITimingProvider>(); timingProvider.ProvideTimestampInMilliseconds().Returns(x => { return(++currentTime); }); // every access is a tick httpClientProvider = Substitute.For <IHTTPClientProvider>(); httpClientProvider.CreateClient(Arg.Any <HTTPClientConfiguration>()).Returns(x => httpClient); // context context = Substitute.For <IBeaconSendingContext>(); context.HTTPClientProvider.Returns(x => httpClientProvider); context.GetHTTPClient().Returns(x => httpClient); context.IsCaptureOn.Returns(true); // beacon sender logger = Substitute.For <ILogger>(); beaconSender = new BeaconSender(logger, config, httpClientProvider, timingProvider); // current time getter context.CurrentTimestamp.Returns(x => timingProvider.ProvideTimestampInMilliseconds()); // sessions context.NewSessions.Returns(newSessions); context.OpenAndConfiguredSessions.Returns(openSessions); context.FinishedAndConfiguredSessions.Returns(finishedSessions); }
public void Setup() { httpClient = Substitute.For <IHTTPClient>(); newSessions = new List <SessionWrapper>(); openSessions = new List <SessionWrapper>(); finishedSessions = new List <SessionWrapper>(); // provider timingProvider = Substitute.For <ITimingProvider>(); httpClientProvider = Substitute.For <IHTTPClientProvider>(); httpClientProvider.CreateClient(Arg.Any <HTTPClientConfiguration>()).Returns(x => httpClient); // context context = Substitute.For <IBeaconSendingContext>(); context.GetHTTPClient().Returns(httpClient); context.HTTPClientProvider.Returns(httpClientProvider); // beacon sender var logger = Substitute.For <ILogger>(); beaconSender = new BeaconSender(logger, context); // sessions context.NewSessions.Returns(newSessions); context.OpenAndConfiguredSessions.Returns(openSessions); context.FinishedAndConfiguredSessions.Returns(finishedSessions); }
/// <summary> /// Constructor /// /// Current state is initialized to <see cref="Dynatrace.OpenKit.Core.Communication."/> /// /// </summary> /// <param name="logger"></param> /// <param name="configuration"></param> /// <param name="httpClientProvider"></param> /// <param name="timingProvider"></param> public BeaconSendingContext(ILogger logger, OpenKitConfiguration configuration, IHTTPClientProvider httpClientProvider, ITimingProvider timingProvider) { this.logger = logger; Configuration = configuration; HTTPClientProvider = httpClientProvider; TimingProvider = timingProvider; // set current state to init state CurrentState = new BeaconSendingInitState(); }
/// <summary> /// Constructor /// /// Current state is initialized to <see cref="Dynatrace.OpenKit.Core.Communication."/> /// /// </summary> /// <param name="configuration"></param> /// <param name="httpClientProvider"></param> /// <param name="timingProvider"></param> public BeaconSendingContext(OpenKitConfiguration configuration, IHTTPClientProvider httpClientProvider, ITimingProvider timingProvider) { Configuration = configuration; HTTPClientProvider = httpClientProvider; TimingProvider = timingProvider; // set time sync supported to true IsTimeSyncSupported = true; // set last time sync time to -1 LastTimeSyncTime = -1; // set current state to init state CurrentState = new BeaconSendingInitState(); }
protected OpenKit(ILogger logger, OpenKitConfiguration configuration, IHTTPClientProvider httpClientProvider, ITimingProvider timingProvider, IThreadIDProvider threadIDProvider) { this.configuration = configuration; this.logger = logger; this.timingProvider = timingProvider; this.threadIDProvider = threadIDProvider; beaconCache = new BeaconCache(); beaconSender = new BeaconSender(configuration, httpClientProvider, timingProvider); beaconCacheEvictor = new BeaconCacheEvictor(logger, beaconCache, configuration.BeaconCacheConfig, timingProvider); }
public void Setup() { currentTime = 1; lastTimeSyncTime = 1; newSessions = new List <SessionWrapper>(); openSessions = new List <SessionWrapper>(); finishedSessions = new List <SessionWrapper>(); // http client httpClient = Substitute.For <IHTTPClient>(); // provider timingProvider = Substitute.For <ITimingProvider>(); timingProvider.ProvideTimestampInMilliseconds().Returns(x => { return(++currentTime); }); // every access is a tick httpClientProvider = Substitute.For <IHTTPClientProvider>(); httpClientProvider.CreateClient(Arg.Any <HTTPClientConfiguration>()).Returns(x => httpClient); // context context = Substitute.For <IBeaconSendingContext>(); context.HTTPClientProvider.Returns(x => httpClientProvider); context.GetHTTPClient().Returns(x => httpClient); context.LastTimeSyncTime.Returns(x => currentTime); // always return the current time to prevent re-sync context.IsCaptureOn.Returns(true); // beacon sender var logger = Substitute.For <ILogger>(); beaconSender = new BeaconSender(logger, config, httpClientProvider, timingProvider); // return true by default context.IsTimeSyncSupported.Returns(true); // current time getter context.CurrentTimestamp.Returns(x => timingProvider.ProvideTimestampInMilliseconds()); // last time sycn getter + setter context.LastTimeSyncTime = Arg.Do <long>(x => lastTimeSyncTime = x); context.LastTimeSyncTime = lastTimeSyncTime; // sessions context.NewSessions.Returns(newSessions); context.OpenAndConfiguredSessions.Returns(openSessions); context.FinishedAndConfiguredSessions.Returns(finishedSessions); }
/// <summary> /// send current state of Beacon /// </summary> /// <param name="httpClientProvider"></param> /// <param name="numRetries"></param> /// <returns></returns> public StatusResponse Send(IHTTPClientProvider httpClientProvider) { var httpClient = httpClientProvider.CreateClient(httpConfiguration); StatusResponse response = null; while (true) { // prefix for this chunk - must be built up newly, due to changing timestamps var prefix = basicBeaconData + BEACON_DATA_DELIMITER + CreateTimestampData(); // subtract 1024 to ensure that the chunk does not exceed the send size configured on server side? // i guess that was the original intention, but i'm not sure about this // TODO stefan.eberl - This is a quite uncool algorithm and should be improved, avoid subtracting some "magic" number var chunk = beaconCache.GetNextBeaconChunk(sessionNumber, prefix, configuration.MaxBeaconSize - 1024, BEACON_DATA_DELIMITER); if (string.IsNullOrEmpty(chunk)) { // no data added so far or no data to send return(response); } byte[] encodedBeacon = Encoding.UTF8.GetBytes(chunk); // send the request response = httpClient.SendBeaconRequest(clientIPAddress, encodedBeacon); if (response == null) { // error happened - but don't know what exactly // reset the previously retrieved chunk (restore it in internal cache) & retry another time beaconCache.ResetChunkedData(sessionNumber); break; } else { // worked -> remove previously retrieved chunk from cache beaconCache.RemoveChunkedData(sessionNumber); } } return(response); }
public void Setup() { httpClient = Substitute.For <IHTTPClient>(); finishedSessions = new Queue <Session>(); openSessions = new List <Session>(); // provider timingProvider = Substitute.For <ITimingProvider>(); httpClientProvider = Substitute.For <IHTTPClientProvider>(); httpClientProvider.CreateClient(Arg.Any <HTTPClientConfiguration>()).Returns(x => httpClient); // context context = Substitute.For <IBeaconSendingContext>(); context.GetHTTPClient().Returns(httpClient); context.HTTPClientProvider.Returns(httpClientProvider); // beacon sender beaconSender = new BeaconSender(context); // sessions context.GetAllOpenSessions().Returns(openSessions); context.GetNextFinishedSession().Returns(x => (finishedSessions.Count == 0) ? null : finishedSessions.Dequeue()); }
// sends the current Beacon state public StatusResponse SendBeacon(IHTTPClientProvider clientProvider) { return(beacon.Send(clientProvider)); }
public BeaconSender(ILogger logger, OpenKitConfiguration configuration, IHTTPClientProvider clientProvider, ITimingProvider provider) : this(logger, new BeaconSendingContext(logger, configuration, clientProvider, provider)) { }
public BeaconSender(OpenKitConfiguration configuration, IHTTPClientProvider clientProvider, ITimingProvider provider) : this(new BeaconSendingContext(configuration, clientProvider, provider)) { }
/// <summary> /// Send Beacon. /// </summary> /// <param name="httpClientProvider"></param> /// <returns></returns> internal StatusResponse SendBeacon(IHTTPClientProvider httpClientProvider) { return(Session.SendBeacon(httpClientProvider)); }