public void ShouldPlayEvents()
        {
            var directoryProvider = new TestDirectoryProvider();

            Directory.Delete(directoryProvider.Directory, true);
            var events = new ConcurrentBag <LogEvent>();

            CollectionAssert.IsEmpty(events);

            string testFile1 = Path.Combine(directoryProvider.Directory, "Journal.1234.log");
            string testFile2 = Path.Combine(directoryProvider.Directory, "Journal.2345.log");

            File.WriteAllText(testFile1, EventsAsJson.Skip(5).First());
            File.WriteAllText(testFile2, EventsAsJson.Skip(5).First());

            var burstPlayer1 = new LogBurstPlayer(directoryProvider.Directory, 1);

            burstPlayer1.Subscribe(events.Add);
            burstPlayer1.Play();
            CollectionAssert.IsNotEmpty(events);
            Assert.AreEqual(1, events.Count);

            var burstPlayer2 = new LogBurstPlayer(directoryProvider.Directory, 100);

            burstPlayer2.Subscribe(events.Add);
            burstPlayer2.Play();
            CollectionAssert.IsNotEmpty(events);
            Assert.AreEqual(3, events.Count);
        }
        public async Task IntegrationTestUploadLatestLogs()
        {
            var logEventSource = new LogBurstPlayer(new SavedGamesDirectoryHelper().Directory, 5);
            var logCounter = new LogEventTypeCounter();
            var stateRecorder = new PlayerStateRecorder();

            var inaraRestClient = new ThrottlingRestClient("https://inara.cz/inapi/v1/");
            var inaraConverter = new InaraEventConverter(stateRecorder);
            var inaraApiFacade = new InaraApiFacade(inaraRestClient, TestCredentials.ApiKey, TestCredentials.UserName);

            // Populate the state recorder to avoid missing ships/starsystems data
            foreach (var ev in logEventSource.Events)
                stateRecorder.OnNext(ev); 

            var convertedEvents = logEventSource
                .Events
                .SelectMany(inaraConverter.Convert)
                .ToArray();

            var results = await inaraApiFacade.ApiCall(convertedEvents);
            results = results
                .Where(e => e.EventStatus != 200)
                .Where(e => e.EventStatusText != "There is a newer inventory state recorded already.")
                .Where(e => e.EventStatusText != "This ship was not found but was added automatically.")
                .ToList();

            CollectionAssert.IsEmpty(results);
            Assert.Pass("Uploaded {0} events", convertedEvents.Length);
        }
Example #3
0
 private void AutodetectCmdrNameButton_Click(object sender, EventArgs e)
 {
     try
     {
         autodetectCmdrNameButton.Enabled = false;
         var logEventSource = new LogBurstPlayer(new SavedGamesDirectoryHelper().Directory, 5);
         var cmdrEvent      = logEventSource.Events.OfType <Commander>().FirstOrDefault();
         cmdrNameTextBox.Text = cmdrEvent?.Name ?? cmdrNameTextBox.Text;
         Log.Info("Detected commander name as {0}", cmdrEvent?.Name);
     }
     catch (Exception ex)
     {
         MessageBox.Show("Error detecting cmdr name:\n" + ex.GetStackedErrorMessages(), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
         Log.Error(ex, "Error while detecting cmdr name");
     }
     finally
     {
         autodetectCmdrNameButton.Enabled = true;
     }
 }
Example #4
0
        private static IEnumerable <LogEvent> GetLocalLogEvents()
        {
            var logEventPlayer = new LogBurstPlayer(new SavedGamesDirectoryHelper().Directory, 30);

            return(logEventPlayer.Events.ToList());
        }