示例#1
0
        private void ClearNextObjectInfo()
        {
            var lastObj = client.GetObjects().OrderByDescending(o => o.Id).First();

            var nextId = lastObj.Id;

            bool deleted = false;

            do
            {
                nextId++;

                deleted = Impersonator.ExecuteAction(() =>
                {
                    if (Directory.Exists(ServerManager.PrtgSystemInformationDatabase))
                    {
                        var files = Directory.EnumerateFiles(ServerManager.PrtgSystemInformationDatabase, "*.*", SearchOption.AllDirectories).Where(f => new FileInfo(f).Name.StartsWith($"Device {nextId}.")).ToList();

                        if (files.Count > 0)
                        {
                            Logger.LogTestDetail($"Removing System Information for previously created object ID {nextId}");
                        }

                        foreach (var file in files)
                        {
                            File.Delete(file);
                        }

                        if (files.Count > 0)
                        {
                            return(true);
                        }
                    }

                    return(false);
                });
            } while (deleted);
        }
示例#2
0
 public static void RemoveBackupFile(string fileName) => Impersonator.ExecuteAction(() => File.Delete(fileName));
        private void Logic_Client_RetryRequestInternal(Action <PrtgClient> action, bool isAsync)
        {
            var initialThread = Thread.CurrentThread.ManagedThreadId;

            Impersonator.ExecuteAction(() =>
            {
                var retriesMade   = 0;
                var retriesToMake = 3;

                var coreService = new ServiceController("PRTGCoreService", Settings.Server);

                var localClient           = new PrtgClient(Settings.ServerWithProto, Settings.UserName, Settings.Password);
                localClient.RetryRequest += (sender, args) =>
                {
                    Logger.LogTestDetail($"Handling retry {retriesMade + 1}");

                    if (!isAsync)
                    {
                        AssertEx.AreEqual(initialThread, Thread.CurrentThread.ManagedThreadId, "Event was not handled on initial thread");
                    }
                    retriesMade++;
                };
                localClient.RetryCount = retriesToMake;

                Logger.LogTestDetail("Stopping PRTG Service");

                coreService.Stop();
                coreService.WaitForStatus(ServiceControllerStatus.Stopped);

                try
                {
                    action(localClient);
                }
                catch (AggregateException ex)
                {
                    if (ex.InnerException != null && ex.InnerException.GetType() == typeof(AssertFailedException))
                    {
                        throw ex.InnerException;
                    }
                }
                catch (WebException)
                {
                }
                finally
                {
                    Logger.LogTestDetail("Starting PRTG Service");
                    coreService.Start();
                    coreService.WaitForStatus(ServiceControllerStatus.Running);

                    Logger.LogTestDetail("Sleeping for 30 seconds");
                    Thread.Sleep(30000);

                    Logger.LogTestDetail("Refreshing and sleeping for 20 seconds");
                    localClient.RefreshObject(Settings.Device);
                    Thread.Sleep(20000);

                    ServerManager.WaitForObjects();
                }

                AssertEx.AreEqual(retriesToMake, retriesMade, "An incorrect number of retries were made.");
            });
        }
示例#4
0
 public static List <FileInfo> GetBackupFiles() => Impersonator.ExecuteAction(new DirectoryInfo(PrtgBackups).GetFiles).ToList();