Ejemplo n.º 1
0
        public async Task TestMissingProgram()
        {
            TelemetryInitializeRequest request = new TelemetryInitializeRequest(Guid.NewGuid())
            {
            };

            TelemetryUnitOfWork unit = new TelemetryUnitOfWork(this.TelemetryContext, this.PortalContext, new AssemblyStreamVersionReader());

            TelemetryController         sut      = new TelemetryController(unit);
            TelemetryInitializeResponse response = await sut.Initialize(request).ConfigureAwait(false);

            Assert.IsTrue(response.Exception.Message.Contains($"Program [{request.TelemetryKey}] is null"));
        }
Ejemplo n.º 2
0
        public async Task <TelemetryInitializeResponse> Initialize(TelemetryInitializeRequest request)
        {
            try
            {
                Stopwatch sw = Stopwatch.StartNew();

                if (!ApiRequestsValidator.IsRequestValid(request))
                {
                    return(new TelemetryInitializeResponse()
                    {
                        Exception = new BadRequestException("Request is not valid")
                    });
                }

                TelemetryRootObject program = await work.GetMonitoredProgram(request.TelemetryKey).ConfigureAwait(false);

                if (program == null)
                {
                    {
                        return(new TelemetryInitializeResponse {
                            Exception = new InvalidOperationException($"Program [{request.TelemetryKey}] is null")
                        });
                    }
                }

                string        ip            = "0.0.0.0";
                ClientAppUser clientAppUser = await TelemetryControllerHelpers.GetUserOrAddIfMissing(this.work, request.UserInfo, ip).ConfigureAwait(false);

                await this.work.CompleteAsync().ConfigureAwait(false);

                TelemetryInitializeResponse response = new TelemetryInitializeResponse {
                    UserId = clientAppUser.PublicId
                };
                sw.Stop();
                this.telemetryClient.TrackEvent("Initialize", new Dictionary <string, string>()
                {
                    { $"ProgramName", request.ProgramInfo?.Name },
                    { $"ExecutionTime", sw.ElapsedMilliseconds.ToString() },
                    { $"ProgramId", program.ProgramId.ToString() },
                    { $"TelemetryKey", program.TelemetryKey.ToString() },
                });
                return(response);
            }
            catch (Exception ex)
            {
                return(new TelemetryInitializeResponse {
                    Exception = new InvalidOperationException("Error while processing telemetry initialize request", ex)
                });
            }
        }
Ejemplo n.º 3
0
        public void Test_RegistrationFunc(ITelimena telimena, Func <TelemetryInitializeResponse> func, bool skipFlagExpectedValue)
        {
            try
            {
                TelemetryInitializeResponse result = func();
                Assert.Fail("Exception expected");
            }
            catch (Exception e)
            {
                TelimenaException ex = e as TelimenaException;
                Assert.AreEqual(1, ex.InnerExceptions.Count);

                StringAssert.Contains("An error occurred while posting to [api/v1/telemetry/initialize]", ex.InnerExceptions[0].Message);
                TelemetryInitializeRequest jObj = ex.RequestObjects[0].Value as TelemetryInitializeRequest;
                ((Telimena)telimena).Properties.StaticProgramInfo.ThrowIfPublicPropertiesNotEqual(jObj.ProgramInfo, true);
            }
        }
Ejemplo n.º 4
0
        public async Task <TelemetryInitializeResponse> Initialize(TelemetryInitializeRequest request)
        {
            try
            {
                if (!ApiRequestsValidator.IsRequestValid(request))
                {
                    return(new TelemetryInitializeResponse()
                    {
                        Exception = new BadRequestException("Request is not valid")
                    });
                }

                TelemetryRootObject program = await work.GetMonitoredProgram(request.TelemetryKey).ConfigureAwait(false);

                if (program == null)
                {
                    {
                        return(new TelemetryInitializeResponse {
                            Exception = new InvalidOperationException($"Program [{request.TelemetryKey}] is null")
                        });
                    }
                }

                string        ip            = this.Request.GetClientIp();
                ClientAppUser clientAppUser = await TelemetryControllerHelpers.GetUserOrAddIfMissing(this.work, request.UserInfo, ip).ConfigureAwait(false);

                await this.work.CompleteAsync().ConfigureAwait(false);

                TelemetryInitializeResponse response = new TelemetryInitializeResponse {
                    UserId = clientAppUser.PublicId
                };
                return(response);
            }
            catch (Exception ex)
            {
                return(new TelemetryInitializeResponse {
                    Exception = new InvalidOperationException("Error while processing telemetry initialize request", ex)
                });
            }
        }
Ejemplo n.º 5
0
 public static bool IsRequestValid(TelemetryInitializeRequest request)
 {
     return(request != null);
 }