public async void PollHandlerCanCreateAndPostPoll() { PluginStore.InitializePluginStoreNew(builder => new AssemblyCatalog(GetType().Assembly, builder)); var commandQ = new MockCommandQueue(); var dataSource = new MockDataSource(); var repo = dataSource.Repository<User>() as MockRepository<User>; repo.ObjectCache.Add("ballouthebear", new User() { Channels = new Dictionary<string, UserChannel>() { { "#ballouthebear", new UserChannel() { IsModerator = true } } } }); var rawMessage = "@color=#FF0000;display-name=BallouTheBear;emotes=;subscriber=0;turbo=0;user-id=30514348;user-type= :[email protected] PRIVMSG #ballouthebear :!poll \"Do you like big butts?\";\"Yes\";\"No\""; var message = MessageParser.ParseIrcMessage(rawMessage); var pollHandler = new PollHandler(commandQ, dataSource, new MockLogger()); await pollHandler.ReceiveMessage(message); var result = commandQ.DequeueCommand(); Assert.NotNull(result); Assert.NotEqual("", result); Assert.Contains("Do you like big butts?", result); }
public async void ShouldLetAdminsPostLinks() { var commandQueue = new MockCommandQueue(); var dataSource = new MockDataSource(); var repo = dataSource.Repository<User>() as MockRepository<User>; repo.ObjectCache.Add("ballouthebear", new User() { Channels = new Dictionary<string, UserChannel>() { { "#ballouthebear", new UserChannel() { IsModerator = true } } } }); var linkSpamHandler = new LinkSpamFilter(commandQueue, dataSource); var message = MessageParser.ParseIrcMessage("@color=#FF0000;display-name=BallouTheBear;emotes=;subscriber=0;turbo=0;user-id=30514348;user-type= :[email protected] PRIVMSG #ballouthebear :Check it out! www.google.com"); await linkSpamHandler.ReceiveMessage(message); var command = commandQueue.DequeueCommand(); Assert.Equal(command, ""); }
public async void PollHandlerRejectsOnlyOneOption() { var commandQ = new MockCommandQueue(); var dataSource = new MockDataSource(); var repo = dataSource.Repository<User>() as MockRepository<User>; repo.ObjectCache.Add("ballouthebear", new User() { Channels = new Dictionary<string, UserChannel>() { { "#ballouthebear", new UserChannel() { IsModerator = true } } } }); var rawMessage = "@color=#FF0000;display-name=BallouTheBear;emotes=;subscriber=0;turbo=0;user-id=30514348;user-type= :[email protected] PRIVMSG #ballouthebear :!poll \"Do you like big butts?\";\"Yes\""; var message = MessageParser.ParseIrcMessage(rawMessage); var pollHandler = new PollHandler(commandQ, dataSource, new MockLogger()); await pollHandler.ReceiveMessage(message); var result = commandQ.DequeueCommand(); Assert.NotNull(result); Assert.NotEqual("", result); Assert.Contains("You must have at least two options!", result); }
public void QualifyTest() { var dummyDataSource = new MockDataSource(); var archive = new TelemetryArchive(); var loggerFromZero = new TelemetryLogger("test", new TelemetryLoggerConfiguration(true, true, true, true)); loggerFromZero.SetDatasource(dummyDataSource); GlobalEvents.Fire(new SessionStarted(), true); Assert.False(archive.QualifiesForStorage(loggerFromZero)); loggerFromZero.Update(0); Assert.False(archive.QualifiesForStorage(loggerFromZero)); loggerFromZero.Update(1000); Assert.False(archive.QualifiesForStorage(loggerFromZero)); loggerFromZero.Update(5000); Assert.False(archive.QualifiesForStorage(loggerFromZero)); loggerFromZero.Update(10000); Assert.True(archive.QualifiesForStorage(loggerFromZero)); loggerFromZero.Close(); var loggerFromElse = new TelemetryLogger("test", new TelemetryLoggerConfiguration(true, true, true, true)); loggerFromElse.SetDatasource(dummyDataSource); GlobalEvents.Fire(new SessionStarted(), true); Assert.False(archive.QualifiesForStorage(loggerFromElse)); loggerFromElse.Update(10000); Assert.False(archive.QualifiesForStorage(loggerFromElse)); loggerFromElse.Update(13000); Assert.False(archive.QualifiesForStorage(loggerFromElse)); loggerFromElse.Update(0); Assert.False(archive.QualifiesForStorage(loggerFromElse)); loggerFromElse.Update(20000); Assert.True(archive.QualifiesForStorage(loggerFromElse)); loggerFromElse.Update(24*3600*1000); Assert.True(archive.QualifiesForStorage(loggerFromElse)); }
public async void ShouldTimeoutLinkSpamMessages() { var commandQueue = new MockCommandQueue(); var dataSource = new MockDataSource(); var linkSpamHandler = new LinkSpamFilter(commandQueue, dataSource); var message = MessageParser.ParseIrcMessage("@color=#FF0000;display-name=BallouTheBear;emotes=;subscriber=0;turbo=0;user-id=30514348;user-type= :[email protected] PRIVMSG #ballouthebear :Check it out! www.google.com"); await linkSpamHandler.ReceiveMessage(message); var command = commandQueue.DequeueCommand(); Assert.NotEqual(command, ""); }
public async void AdminCanGratPermissionToUserForLinks() { var commandQueue = new MockCommandQueue(); var dataSource = new MockDataSource(); var repo = dataSource.Repository<User>() as MockRepository<User>; repo.ObjectCache.Add("ballouthebear", new User() { Channels = new Dictionary<string, UserChannel>() { { "#ballouthebear", new UserChannel() { IsModerator = true } } }, Data = new Dictionary<string, object>() }); repo.ObjectCache.Add("taylormade86", new User() { Channels = new Dictionary<string, UserChannel>() { { "#ballouthebear", new UserChannel() { IsModerator = false } } }, Data = new Dictionary<string, object>() }); var linkSpamHandler = new LinkSpamFilter(commandQueue, dataSource); var adminMessage = MessageParser.ParseIrcMessage("@color=#FF0000;display-name=BallouTheBear;emotes=;subscriber=0;turbo=0;user-id=30514348;user-type= :[email protected] PRIVMSG #ballouthebear :!permit taylormade86"); await linkSpamHandler.ReceiveMessage(adminMessage); var command = commandQueue.DequeueCommand(); Assert.Equal(command, "PRIVMSG #ballouthebear :User taylormade86 has been permitted to post a link."); var userMessage = MessageParser.ParseIrcMessage("@color=#FF0000;display-name=Taylormade86;emotes=;subscriber=0;turbo=0;user-id=30514348;user-type= :[email protected] PRIVMSG #ballouthebear :Check it out! www.google.com"); await linkSpamHandler.ReceiveMessage(userMessage); command = commandQueue.DequeueCommand(); Assert.Equal(command, ""); }
public async Task IncludesEtagInConditions() { MemoryStream stream = new MemoryStream(); MockDataSource dataSource = new MockDataSource(100); Mock <BlobBaseClient> blockClient = new Mock <BlobBaseClient>(MockBehavior.Strict, new Uri("http://mock"), new BlobClientOptions()); blockClient.SetupGet(c => c.ClientConfiguration).CallBase(); SetupDownload(blockClient, dataSource); PartitionedDownloader downloader = new PartitionedDownloader( blockClient.Object, new StorageTransferOptions() { MaximumTransferLength = 10, InitialTransferLength = 10 }); Response result = await InvokeDownloadToAsync(downloader, stream); Assert.AreEqual(dataSource.Requests.Count, 10); AssertContent(100, stream); Assert.NotNull(result); bool first = true; foreach ((HttpRange Range, BlobRequestConditions Conditions)request in dataSource.Requests) { Assert.AreEqual(s_conditions.LeaseId, request.Conditions.LeaseId); Assert.AreEqual(s_conditions.IfModifiedSince, request.Conditions.IfModifiedSince); Assert.AreEqual(s_conditions.IfUnmodifiedSince, request.Conditions.IfUnmodifiedSince); Assert.AreEqual(s_conditions.IfNoneMatch, request.Conditions.IfNoneMatch); if (first) { first = false; } else { Assert.AreEqual(s_etag, request.Conditions.IfMatch); } } }
public void StoreLogFile() { var dummyDataSource = new MockDataSource(); var archive = new TelemetryArchive(); var loggerFromZero = new TelemetryLogger("test", new TelemetryLoggerConfiguration(true, true, true, true)); loggerFromZero.SetDatasource(dummyDataSource); loggerFromZero.SetAnnotater(archive); var logWriter = new LogFileWriter("test.zip","TelemetryArchiveTestsStoreLogFile"); GlobalEvents.Fire(new SessionStarted(), true); loggerFromZero.Update(0); loggerFromZero.Update(10000); loggerFromZero.Update(20000); GlobalEvents.Fire(new SessionStopped(), true); Thread.Sleep(5000); }
public async Task DownloadsInBlocksWhenOverTheLimit() { MemoryStream stream = new MemoryStream(); MockDataSource dataSource = new MockDataSource(100); Mock <BlobBaseClient> blockClient = new Mock <BlobBaseClient>(MockBehavior.Strict, new Uri("http://mock"), new BlobClientOptions()); blockClient.SetupGet(c => c.ClientConfiguration).CallBase(); SetupDownload(blockClient, dataSource); PartitionedDownloader downloader = new PartitionedDownloader( blockClient.Object, new StorageTransferOptions() { MaximumTransferLength = 10, InitialTransferLength = 20 }); Response result = await InvokeDownloadToAsync(downloader, stream); Assert.AreEqual(dataSource.Requests.Count, 9); AssertContent(100, stream); Assert.NotNull(result); }
public MainPageViewModel() { _dataSource = new MockDataSource(); Languages = _dataSource.Languages; LoadData(); }
private void StartButtonClicked(object parameters) { string param = parameters.ToString(); if (param == "START") { DataSourceAdjustCoord transferSource = new DataSourceAdjustCoord(DateToFetch, FileToCorrect); Datasource = transferSource; ConvertingStatus = transferSource.ConvertingStatus; NotifyPropertyChanged(p => p.ConvertingStatus); (transferSource as DataSourceAdjustCoord).ConvertCompleted += (s1, a1) => { string str1 = App.Current.FindResource("msgAdjustComplete").ToString(); MessageBox.Show(str1, "", MessageBoxButtons.OK, MessageBoxIcon.Information); }; BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += (s, a) => { transferSource.ConvertToMBTiles(FileToCorrect, "", "", "", new int[] { 18, 19 }, null, false); }; bw.RunWorkerAsync(); } else if (param == "MERGE") { IsMergeButtonEnable = false; BackgroundWorker bw = new BackgroundWorker(); bw.RunWorkerCompleted += (s, a) => { MessageBox.Show("转换完成", "", MessageBoxButtons.OK, MessageBoxIcon.Information); }; bw.DoWork += (s, a) => { Datasource = new MockDataSource(); ConvertingStatus = new ConvertStatus(); ((MockDataSource)Datasource).ConvertingStatus = ConvertingStatus; NotifyPropertyChanged(p => p.ConvertingStatus); List <int> levels = new List <int>(); int recordCount = 0; int totalCount = 0; string boundA = "", boundB = ""; SQLiteConnection _outputconn = new SQLiteConnection("Data source = " + FileToCorrect); _outputconn.Open(); SQLiteConnection _inputconn = new SQLiteConnection("Data source = " + DateToFetch); _inputconn.Open(); ConvertingStatus.IsInProgress = true; using (SQLiteTransaction writeTran = _outputconn.BeginTransaction()) { SQLiteCommand readCommand = new SQLiteCommand(_inputconn); SQLiteCommand writeCommand = new SQLiteCommand(_outputconn); readCommand.CommandText = "select value from metadata where name = 'bounds'"; SQLiteDataReader reader = readCommand.ExecuteReader(); if (reader.Read()) { boundA = reader.GetString(0); } reader.Close(); writeCommand.CommandText = "select value from metadata where name = 'bounds'"; reader = writeCommand.ExecuteReader(); if (reader.Read()) { boundB = reader.GetString(0); } reader.Close(); readCommand.CommandText = "select count(*) from tiles"; reader = readCommand.ExecuteReader(); if (reader.Read()) { totalCount = reader.GetInt32(0); } ConvertingStatus.TotalCount = totalCount; reader.Close(); readCommand.CommandText = "select distinct(zoom_level) from tiles order by zoom_level"; reader = readCommand.ExecuteReader(); while (reader.Read()) { levels.Add(reader.GetInt32(0)); } reader.Close(); foreach (int level in levels) { readCommand.CommandText = "select count(*) from tiles where zoom_level = " + level; reader = readCommand.ExecuteReader(); reader.Read(); int levelCount = reader.GetInt32(0); int levelCompleted = 0; ConvertingStatus.Level = level; ConvertingStatus.LevelTotalCount = levelCount; ConvertingStatus.LevelCompleteCount = ConvertingStatus.LevelErrorCount = 0; reader.Close(); readCommand.CommandText = "select zoom_level, tile_column, tile_row, tile_data from tiles where zoom_level = " + level; reader = readCommand.ExecuteReader(); while (reader.Read()) { int col = reader.GetInt32(1); int row = reader.GetInt32(2); byte[] data = (byte[])reader.GetValue(3); try { WriteTilesToSqlite(level, col, row, data, writeCommand); } catch (Exception e) { } finally { levelCompleted++; recordCount++; ConvertingStatus.LevelCompleteCount = levelCompleted; ConvertingStatus.CompleteCount = recordCount; TotalPercent = ConvertingStatus.CompletePercent; } } reader.Close(); } writeCommand.CommandText = "update metadata set value = @bound where name = 'bounds'"; writeCommand.Parameters.AddWithValue("bound", mergeBounds(boundA, boundB)); writeCommand.ExecuteNonQuery(); writeTran.Commit(); writeTran.Dispose(); } ConvertingStatus.IsInProgress = false; _inputconn.Close(); _inputconn.Dispose(); _outputconn.Close(); _outputconn.Dispose(); }; bw.RunWorkerAsync(); } }