public void MassInsertTest(string connectionName, string databaseName, string schemaName, int docCount, bool reset) { var options = new StorageOptions(new ConnectionStrings().Get(connectionName), databaseName: databaseName, schemaName: schemaName); var connectionFactory = new SqlConnectionFactory(); var indexMap = TestDocumentIndexMap; var storage = new DocStorage <TestDocument>(connectionFactory, options, new SqlBuilder(), new JsonNetSerializer(), new Md5Hasher(), indexMap); MiniProfiler.Start(); var mp = MiniProfiler.Current; if (reset) { storage.Reset(); } Log.Debug($"pre count: {storage.Count(new[] {"en-US"})}"); var key = DateTime.Now.Epoch() + new Random().Next(10000, 99999); for (var i = 1; i <= docCount; i++) { Log.Debug($"+{i}"); var doc = new Fixture().Create <TestDocument>(); doc.Id = i; storage.Upsert(key + i, doc, new[] { "en-US" }, timestamp: DateTime.Now.AddMinutes(i)); } Log.Debug($"post count: {storage.Count(new[] {"en-US"})}"); Log.Debug($"trace: {mp.RenderPlainText()}"); MiniProfiler.Stop(); }
public void InitializeTest(string connectionName, string databaseName, string schemaName) { var options = new StorageOptions(new ConnectionStrings().Get(connectionName), databaseName: databaseName, schemaName: schemaName); var connectionFactory = new SqlConnectionFactory(); var indexMap = TestDocumentIndexMap; var storage = new DocStorage <TestDocument>(connectionFactory, options, new SqlBuilder(), new JsonNetSerializer(), new Md5Hasher(), indexMap); storage.Reset(); Assert.That(storage.Count(), Is.EqualTo(0)); }
public void InsertDataTest(string connectionName, string databaseName, string schemaName) { var options = new StorageOptions(new ConnectionStrings().Get(connectionName), databaseName: databaseName, schemaName: schemaName); var connectionFactory = new SqlConnectionFactory(); var indexMap = TestDocumentIndexMap; var storage = new DocStorage <TestDocument>(connectionFactory, options, new SqlBuilder(), new JsonNetSerializer(), new Md5Hasher(), indexMap); MiniProfiler.Start(); var mp = MiniProfiler.Current; storage.Reset(); var preCount = storage.Count(new[] { "en-US" }); Log.Debug($"pre count: {preCount}"); var key1 = DateTime.Now.Epoch() + new Random().Next(10000, 99999); var inStream1 = File.OpenRead(@"c:\tmp\cat.jpg"); storage.Upsert(key1, inStream1, new[] { "en-US" }); var outStreams1 = storage.LoadData(key1, new[] { "en-US" }); Assert.That(outStreams1, Is.Not.Null); Assert.That(outStreams1.Any()); foreach (var outStream in outStreams1) { Assert.That(outStream, Is.Not.Null); File.WriteAllBytes($@"c:\tmp\cat_{key1}.jpg", outStream.ToBytes()); } var result1 = storage.Upsert(key1, new Fixture().Create <TestDocument>(), new[] { "en-US" }); Assert.That(result1, Is.EqualTo(StorageAction.Updated)); var key2 = DateTime.Now.Epoch() + new Random().Next(10000, 99999); var inStream2 = File.OpenRead(@"c:\tmp\test.log"); storage.Upsert(key2, inStream2, new[] { "en-US" }); var outStreams2 = storage.LoadData(key2, new[] { "en-US" }); Assert.That(outStreams2, Is.Not.Null); Assert.That(outStreams2.Any()); foreach (var outStream in outStreams2) { Assert.That(outStream, Is.Not.Null); File.WriteAllBytes($@"c:\tmp\test_{key1}.log", outStream.ToBytes()); } var result2 = storage.Upsert(key2, new Fixture().Create <TestDocument>(), new[] { "en-US" }); Assert.That(result2, Is.EqualTo(StorageAction.Updated)); }
public void DeleteTest(string connectionName, string databaseName, string schemaName) { var options = new StorageOptions(new ConnectionStrings().Get(connectionName), databaseName: databaseName, schemaName: schemaName); var connectionFactory = new SqlConnectionFactory(); var indexMap = TestDocumentIndexMap; var storage = new DocStorage <TestDocument>(connectionFactory, options, new SqlBuilder(), new JsonNetSerializer(), new Md5Hasher(), indexMap); storage.Initialize(); storage.Reset(); Assert.That(storage.Count(), Is.EqualTo(0)); var doc1 = new Fixture().Create <TestDocument>(); storage.Upsert("key1", doc1, new[] { "en-US" }); var doc2 = new Fixture().Create <TestDocument>(); storage.Upsert("key2", doc1, new[] { "en-US" }); var doc3 = new Fixture().Create <TestDocument>(); storage.Upsert("key1", doc1, new[] { "en-GB" }); Assert.That(storage.Count(), Is.EqualTo(3)); var result1 = storage.Delete("key1", new[] { "en-US" }); // removes only key1 + en-US Assert.That(result1, Is.EqualTo(StorageAction.Deleted)); Assert.That(storage.Count(), Is.EqualTo(2)); var result2 = storage.Delete("key1"); // removes all with key1 Assert.That(result2, Is.EqualTo(StorageAction.Deleted)); Assert.That(storage.Count(), Is.EqualTo(1)); var result3 = storage.Delete("key2"); // removes all with key2 Assert.That(result3, Is.EqualTo(StorageAction.Deleted)); Assert.That(storage.Count(), Is.EqualTo(0)); }
public void PagingAndSortingTest(string connectionName, string databaseName, string schemaName) { var options = new StorageOptions(new ConnectionStrings().Get(connectionName), databaseName: databaseName, schemaName: schemaName) { DefaultTakeSize = 3, MaxTakeSize = 5, DefaultSortColumn = SortColumn.TimestampDescending }; var connectionFactory = new SqlConnectionFactory(); var indexMap = TestDocumentIndexMap; var storage = new DocStorage <TestDocument>(connectionFactory, options, new SqlBuilder(), new JsonNetSerializer(), new Md5Hasher(), indexMap); MiniProfiler.Start(); var mp = MiniProfiler.Current; MassInsertTest(connectionName, databaseName, schemaName, 20, true); var docs1 = storage.LoadValues(new[] { "en-US" }).ToList(); Assert.That(docs1, Is.Not.Null); Assert.That(docs1.Any(), Is.True); Assert.That(docs1.Count, Is.EqualTo(options.DefaultTakeSize)); foreach (var doc in docs1) { Log.Debug($"doc1: {doc.Id}, {doc.Name}"); } var docs2 = storage.LoadValues(new[] { "en-US" }, skip: 0, take: 10).ToList(); Assert.That(docs2, Is.Not.Null); Assert.That(docs2.Any(), Is.True); Assert.That(docs2.Count, Is.EqualTo(options.MaxTakeSize)); foreach (var doc in docs2) { Log.Debug($"doc2: {doc.Id}, {doc.Name}"); } Log.Debug($"trace: {mp.RenderPlainText()}"); MiniProfiler.Stop(); }
public void DeleteTest(string connectionName, string databaseName, string schemaName) { var options = new StorageOptions(new ConnectionStrings().Get(connectionName), databaseName: databaseName, schemaName: schemaName); var connectionFactory = new SqlConnectionFactory(); var indexMap = TestDocumentIndexMap; var storage = new DocStorage<TestDocument>(connectionFactory, options, new SqlBuilder(), new JsonNetSerializer(), new Md5Hasher(), indexMap); storage.Initialize(); storage.Reset(); Assert.That(storage.Count(), Is.EqualTo(0)); var doc1 = new Fixture().Create<TestDocument>(); storage.Upsert("key1", doc1, new[] {"en-US"}); var doc2 = new Fixture().Create<TestDocument>(); storage.Upsert("key2", doc1, new[] {"en-US"}); var doc3 = new Fixture().Create<TestDocument>(); storage.Upsert("key1", doc1, new[] {"en-GB"}); Assert.That(storage.Count(), Is.EqualTo(3)); var result1 = storage.Delete("key1", new[] {"en-US"}); // removes only key1 + en-US Assert.That(result1, Is.EqualTo(StorageAction.Deleted)); Assert.That(storage.Count(), Is.EqualTo(2)); var result2 = storage.Delete("key1"); // removes all with key1 Assert.That(result2, Is.EqualTo(StorageAction.Deleted)); Assert.That(storage.Count(), Is.EqualTo(1)); var result3 = storage.Delete("key2"); // removes all with key2 Assert.That(result3, Is.EqualTo(StorageAction.Deleted)); Assert.That(storage.Count(), Is.EqualTo(0)); }
public void UpsertTest(string connectionName, string databaseName, string schemaName) { var options = new StorageOptions(new ConnectionStrings().Get(connectionName), databaseName: databaseName, schemaName: schemaName); var connectionFactory = new SqlConnectionFactory(); var indexMap = TestDocumentIndexMap; var storage = new DocStorage <TestDocument>(connectionFactory, options, new SqlBuilder(), new JsonNetSerializer(), new Md5Hasher(), indexMap); MiniProfiler.Start(); var mp = MiniProfiler.Current; storage.Reset(); var key = DateTime.Now.Epoch() + new Random().Next(10000, 99999); using (mp.Step("insert ")) { var newDoc = new Fixture().Create <TestDocument>(); var result1 = storage.Upsert(key, newDoc, new[] { "en-US" }); Assert.That(result1, Is.EqualTo(StorageAction.Inserted)); Log.Debug("newDoc: " + newDoc.Name); newDoc.Name = Guid.NewGuid().ToString(); var result2 = storage.Upsert(key, newDoc, new[] { "en-US" }); Assert.That(result2, Is.EqualTo(StorageAction.Updated)); Log.Debug("newDoc: " + newDoc.Name); var updatedDoc = storage.LoadValues(key, new[] { "en-US" }).ToList(); Assert.That(updatedDoc, Is.Not.Null); Assert.That(updatedDoc.Any(), Is.True); Assert.That(updatedDoc.Count(), Is.EqualTo(1)); Assert.That(updatedDoc.First().Name, Is.Not.Null); Assert.That(updatedDoc.First().Name, Is.EqualTo(newDoc.Name)); Log.Debug("updatedDoc: " + updatedDoc.First().Name); } Log.Debug($"trace: {mp.RenderPlainText()}"); MiniProfiler.Stop(); }
public void InsertTest(string connectionName, string databaseName, string schemaName) { var options = new StorageOptions(new ConnectionStrings().Get(connectionName), databaseName: databaseName, schemaName: schemaName); //var options = new StorageOptions(new ConnectionStrings().Get("XtricateTestSqlLocalDb"), databaseName: databaseName, schemaName: "StorageTests"); //var connectionFactory = new SqlLocalDbConnectionFactory(); var connectionFactory = new SqlConnectionFactory(); var indexMap = TestDocumentIndexMap; var storage = new DocStorage <TestDocument>(connectionFactory, options, new SqlBuilder(), new JsonNetSerializer(), new Md5Hasher(), indexMap); MiniProfiler.Start(); var mp = MiniProfiler.Current; storage.Reset(); var preCount = storage.Count(new[] { "en-US" }); Log.Debug($"pre count: {preCount}"); var key = DateTime.Now.Epoch() + new Random().Next(10000, 99999); for (var i = 1; i < 5; i++) { Log.Debug($"+{i}"); using (mp.Step("insert " + i)) { var doc1 = new Fixture().Create <TestDocument>(); //doc1.Name = "Routing wide joints (≥ 4 mm, e.g. between natural stone tiles)öoäa®r¼4èe"; doc1.Name = "NEU!Kreissägeblätter Expert for Steel NOUVEAU˜!Lames de scies circulaires Expert for Steel °˛˝˙°ˆˇ! ˘ Expert for Steel"; var result1 = storage.Upsert("key1", doc1, new[] { "en-US" }); // Assert.That(result1, Is.EqualTo(StorageAction.Updated)); //} //using (mp.Step("upsert string")) //{ var result2 = storage.Upsert(Guid.NewGuid(), new Fixture().Create <TestDocument>(), new[] { "en-US" }); //Assert.That(result2, Is.EqualTo(StorageAction.Inserted)); //} //using (mp.Step("upsert int")) //{ var result3 = storage.Upsert(key + i, new Fixture().Create <TestDocument>(), new[] { "en-US" }); //Assert.That(result3, Is.EqualTo(StorageAction.Inserted)); } } for (var i = 1; i <= 5; i++) { using (mp.Step("load " + i)) { var result = storage.LoadValues(new[] { "en-US" }).Take(100); //Assert.That(result, Is.Not.Null); //Assert.That(result, Is.Not.Empty); Log.Debug($"loaded count: {result.Count()}"); Log.Debug($"first: {result.FirstOrDefault().Id}"); //result.ForEach(r => Trace.Write(r.Id)); //result.ForEach(r => Assert.That(r, Is.Not.Null)); result.ForEach(r => Log.Debug(r.Name)); } } using (mp.Step("post count")) { var postCount = storage.Count(new[] { "en-US" }); Log.Debug($"post count: {postCount}"); //Assert.That(storage.Count(), Is.GreaterThan(preCount)); } Log.Debug($"trace: {mp.RenderPlainText()}"); MiniProfiler.Stop(); }
public void InitializeTest(string connectionName, string databaseName, string schemaName) { var options = new StorageOptions(new ConnectionStrings().Get(connectionName), databaseName: databaseName, schemaName: schemaName); var connectionFactory = new SqlConnectionFactory(); var indexMap = TestDocumentIndexMap; var storage = new DocStorage<TestDocument>(connectionFactory, options, new SqlBuilder(), new JsonNetSerializer(), new Md5Hasher(), indexMap); storage.Reset(); Assert.That(storage.Count(), Is.EqualTo(0)); }
public override bool Write(GH_IO.Serialization.GH_IWriter writer) { if (!Enum.IsDefined(typeof(DocStorage), DocStorageMode)) DocStorageMode = DocStorage.InGrasshopperMemory; writer.SetInt32(TargetDocIdentifier, (int)DocStorageMode); return base.Write(writer); }
public void UpsertTest(string connectionName, string databaseName, string schemaName) { var options = new StorageOptions(new ConnectionStrings().Get(connectionName), databaseName: databaseName, schemaName: schemaName); var connectionFactory = new SqlConnectionFactory(); var indexMap = TestDocumentIndexMap; var storage = new DocStorage<TestDocument>(connectionFactory, options, new SqlBuilder(), new JsonNetSerializer(), new Md5Hasher(), indexMap); MiniProfiler.Start(); var mp = MiniProfiler.Current; storage.Reset(); var key = DateTime.Now.Epoch() + new Random().Next(10000, 99999); using (mp.Step("insert ")) { var newDoc = new Fixture().Create<TestDocument>(); var result1 = storage.Upsert(key, newDoc, new[] {"en-US"}); Assert.That(result1, Is.EqualTo(StorageAction.Inserted)); Log.Debug("newDoc: " + newDoc.Name); newDoc.Name = Guid.NewGuid().ToString(); var result2 = storage.Upsert(key, newDoc, new[] {"en-US"}); Assert.That(result2, Is.EqualTo(StorageAction.Updated)); Log.Debug("newDoc: " + newDoc.Name); var updatedDoc = storage.LoadValues(key, new[] {"en-US"}).ToList(); Assert.That(updatedDoc, Is.Not.Null); Assert.That(updatedDoc.Any(), Is.True); Assert.That(updatedDoc.Count(), Is.EqualTo(1)); Assert.That(updatedDoc.First().Name, Is.Not.Null); Assert.That(updatedDoc.First().Name, Is.EqualTo(newDoc.Name)); Log.Debug("updatedDoc: " + updatedDoc.First().Name); } Log.Debug($"trace: {mp.RenderPlainText()}"); MiniProfiler.Stop(); }
public void PagingAndSortingTest(string connectionName, string databaseName, string schemaName) { var options = new StorageOptions(new ConnectionStrings().Get(connectionName), databaseName: databaseName, schemaName: schemaName) { DefaultTakeSize = 3, MaxTakeSize = 5, DefaultSortColumn = SortColumn.TimestampDescending }; var connectionFactory = new SqlConnectionFactory(); var indexMap = TestDocumentIndexMap; var storage = new DocStorage<TestDocument>(connectionFactory, options, new SqlBuilder(), new JsonNetSerializer(), new Md5Hasher(), indexMap); MiniProfiler.Start(); var mp = MiniProfiler.Current; MassInsertTest(connectionName, databaseName, schemaName, 20, true); var docs1 = storage.LoadValues(new[] { "en-US" }).ToList(); Assert.That(docs1, Is.Not.Null); Assert.That(docs1.Any(), Is.True); Assert.That(docs1.Count, Is.EqualTo(options.DefaultTakeSize)); foreach(var doc in docs1) Log.Debug($"doc1: {doc.Id}, {doc.Name}"); var docs2 = storage.LoadValues(new[] { "en-US" }, skip:0, take:10).ToList(); Assert.That(docs2, Is.Not.Null); Assert.That(docs2.Any(), Is.True); Assert.That(docs2.Count, Is.EqualTo(options.MaxTakeSize)); foreach (var doc in docs2) Log.Debug($"doc2: {doc.Id}, {doc.Name}"); Log.Debug($"trace: {mp.RenderPlainText()}"); MiniProfiler.Stop(); }
public void MassInsertTest(string connectionName, string databaseName, string schemaName, int docCount, bool reset) { var options = new StorageOptions(new ConnectionStrings().Get(connectionName), databaseName: databaseName, schemaName: schemaName); var connectionFactory = new SqlConnectionFactory(); var indexMap = TestDocumentIndexMap; var storage = new DocStorage<TestDocument>(connectionFactory, options, new SqlBuilder(), new JsonNetSerializer(), new Md5Hasher(), indexMap); MiniProfiler.Start(); var mp = MiniProfiler.Current; if (reset) storage.Reset(); Log.Debug($"pre count: {storage.Count(new[] {"en-US"})}"); var key = DateTime.Now.Epoch() + new Random().Next(10000, 99999); for (var i = 1; i <= docCount; i++) { Log.Debug($"+{i}"); var doc = new Fixture().Create<TestDocument>(); doc.Id = i; storage.Upsert(key + i, doc, new[] {"en-US"}, timestamp: DateTime.Now.AddMinutes(i)); } Log.Debug($"post count: {storage.Count(new[] {"en-US"})}"); Log.Debug($"trace: {mp.RenderPlainText()}"); MiniProfiler.Stop(); }
public void InsertTest(string connectionName, string databaseName, string schemaName) { var options = new StorageOptions(new ConnectionStrings().Get(connectionName), databaseName: databaseName, schemaName: schemaName); //var options = new StorageOptions(new ConnectionStrings().Get("XtricateTestSqlLocalDb"), databaseName: databaseName, schemaName: "StorageTests"); //var connectionFactory = new SqlLocalDbConnectionFactory(); var connectionFactory = new SqlConnectionFactory(); var indexMap = TestDocumentIndexMap; var storage = new DocStorage<TestDocument>(connectionFactory, options, new SqlBuilder(), new JsonNetSerializer(), new Md5Hasher(), indexMap); MiniProfiler.Start(); var mp = MiniProfiler.Current; storage.Reset(); var preCount = storage.Count(new[] {"en-US"}); Log.Debug($"pre count: {preCount}"); var key = DateTime.Now.Epoch() + new Random().Next(10000, 99999); for (var i = 1; i < 5; i++) { Log.Debug($"+{i}"); using (mp.Step("insert " + i)) { var doc1 = new Fixture().Create<TestDocument>(); //doc1.Name = "Routing wide joints (≥ 4 mm, e.g. between natural stone tiles)öoäa®r¼4èe"; doc1.Name = "NEU!Kreissägeblätter Expert for Steel NOUVEAU˜!Lames de scies circulaires Expert for Steel °˛˝˙°ˆˇ! ˘ Expert for Steel"; var result1 = storage.Upsert("key1", doc1, new[] {"en-US"}); // Assert.That(result1, Is.EqualTo(StorageAction.Updated)); //} //using (mp.Step("upsert string")) //{ var result2 = storage.Upsert(Guid.NewGuid(), new Fixture().Create<TestDocument>(), new[] {"en-US"}); //Assert.That(result2, Is.EqualTo(StorageAction.Inserted)); //} //using (mp.Step("upsert int")) //{ var result3 = storage.Upsert(key + i, new Fixture().Create<TestDocument>(), new[] {"en-US"}); //Assert.That(result3, Is.EqualTo(StorageAction.Inserted)); } } for (var i = 1; i <= 5; i++) { using (mp.Step("load " + i)) { var result = storage.LoadValues(new[] {"en-US"}).Take(100); //Assert.That(result, Is.Not.Null); //Assert.That(result, Is.Not.Empty); Log.Debug($"loaded count: {result.Count()}"); Log.Debug($"first: {result.FirstOrDefault().Id}"); //result.ForEach(r => Trace.Write(r.Id)); //result.ForEach(r => Assert.That(r, Is.Not.Null)); result.ForEach(r => Log.Debug(r.Name)); } } using (mp.Step("post count")) { var postCount = storage.Count(new[] {"en-US"}); Log.Debug($"post count: {postCount}"); //Assert.That(storage.Count(), Is.GreaterThan(preCount)); } Log.Debug($"trace: {mp.RenderPlainText()}"); MiniProfiler.Stop(); }
public void InsertDataTest(string connectionName, string databaseName, string schemaName) { var options = new StorageOptions(new ConnectionStrings().Get(connectionName), databaseName: databaseName, schemaName: schemaName); var connectionFactory = new SqlConnectionFactory(); var indexMap = TestDocumentIndexMap; var storage = new DocStorage<TestDocument>(connectionFactory, options, new SqlBuilder(), new JsonNetSerializer(), new Md5Hasher(), indexMap); MiniProfiler.Start(); var mp = MiniProfiler.Current; storage.Reset(); var preCount = storage.Count(new[] {"en-US"}); Log.Debug($"pre count: {preCount}"); var key1 = DateTime.Now.Epoch() + new Random().Next(10000, 99999); var inStream1 = File.OpenRead(@"c:\tmp\cat.jpg"); storage.Upsert(key1, inStream1, new[] { "en-US" }); var outStreams1 = storage.LoadData(key1, new[] {"en-US"}); Assert.That(outStreams1, Is.Not.Null); Assert.That(outStreams1.Any()); foreach (var outStream in outStreams1) { Assert.That(outStream, Is.Not.Null); File.WriteAllBytes($@"c:\tmp\cat_{key1}.jpg", outStream.ToBytes()); } var result1 = storage.Upsert(key1, new Fixture().Create<TestDocument>(), new[] { "en-US" }); Assert.That(result1, Is.EqualTo(StorageAction.Updated)); var key2 = DateTime.Now.Epoch() + new Random().Next(10000, 99999); var inStream2 = File.OpenRead(@"c:\tmp\test.log"); storage.Upsert(key2, inStream2, new[] { "en-US" }); var outStreams2 = storage.LoadData(key2, new[] { "en-US" }); Assert.That(outStreams2, Is.Not.Null); Assert.That(outStreams2.Any()); foreach (var outStream in outStreams2) { Assert.That(outStream, Is.Not.Null); File.WriteAllBytes($@"c:\tmp\test_{key1}.log", outStream.ToBytes()); } var result2 = storage.Upsert(key2, new Fixture().Create<TestDocument>(), new[] { "en-US" }); Assert.That(result2, Is.EqualTo(StorageAction.Updated)); }
public override bool Read(GH_IO.Serialization.GH_IReader reader) { int val = -1; if (reader.TryGetInt32(TargetDocIdentifier, ref val)) DocStorageMode = (DocStorage)val; if (!Enum.IsDefined(typeof(DocStorage), DocStorageMode)) DocStorageMode = DocStorage.InGrasshopperMemory; return base.Read(reader); }
public void FindTest(string connectionName, string databaseName, string schemaName) { var options = new StorageOptions(new ConnectionStrings().Get(connectionName), databaseName: databaseName, schemaName: schemaName) { BufferedLoad = false }; var connectionFactory = new SqlConnectionFactory(); var indexMap = TestDocumentIndexMap; var storage = new DocStorage <TestDocument>(connectionFactory, options, new SqlBuilder(), new JsonNetSerializer(), new Md5Hasher(), indexMap); MiniProfiler.Start(); var mp = MiniProfiler.Current; Log.Debug($"pre count: {storage.Count(new[] {"en-US"})}"); var key = DateTime.Now.Epoch() + new Random().Next(10000, 99999) + "c"; var name = "NEWNAME" + key; var sku = ""; using (mp.Step("insert ")) { var document = new Fixture().Create <TestDocument>(); document.Name = name; sku = document.Skus.FirstOrDefault().Sku; dynamic dDocument = document; dDocument.Dyn = "dynamic property"; var result1 = storage.Upsert(key, document, new[] { "en-US" }); Assert.That(result1, Is.EqualTo(StorageAction.Inserted)); Log.Debug("newDoc: " + document.Name); } var count = storage.Count(new[] { "en-US" }); var keys = storage.LoadKeys(new[] { "en-US" }).ToList(); Assert.That(keys, Is.Not.Null); Assert.That(keys.Any(), Is.True); Assert.That(count, Is.EqualTo(keys.Count())); 5.Times(i => { using (mp.Step("find no non-existing by SKU criteria/tags " + i)) { var criterias = new List <Criteria> { new Criteria("sku", CriteriaOperator.Eq, "XYZ_SKU") }; var result = storage.LoadValues(new[] { "en-US" }, criterias).ToList(); Assert.That(result, Is.Null.Or.Empty); } }); 5.Times(i => { using (mp.Step("find by KEY/tags " + i)) { var result = storage.LoadValues(key, new[] { "en-US" }).ToList(); Assert.That(result, Is.Not.Null); Assert.That(result.Any(), Is.True); Assert.That(result.FirstOrDefault().Name, Is.EqualTo(name)); } }); 5.Times(i => { using (mp.Step("find by NAME criteria/tags " + i)) { var criterias = new List <Criteria> { new Criteria("name", CriteriaOperator.Eq, name) }; var result = storage.LoadValues(new[] { "en-US" }, criterias).ToList(); Assert.That(result, Is.Not.Null); Assert.That(result.Any(), Is.True); Assert.That(result.FirstOrDefault().Name, Is.EqualTo(name)); } }); 5.Times(i => { using (mp.Step("find by NAME with sql delimiter character " + i)) { var criterias = new List <Criteria> { new Criteria("name", CriteriaOperator.Eq, "'") }; var result = storage.LoadValues(new[] { "en-US" }, criterias).ToList(); Assert.That(result, Is.Null.Or.Empty); } }); 5.Times(i => { using (mp.Step("find by SKU criteria/tags " + i)) { var criterias = new List <Criteria> { new Criteria("sku", CriteriaOperator.Contains, sku) }; var result = storage.LoadValues(new[] { "en-US" }, criterias).ToList(); Assert.That(result, Is.Not.Null); Assert.That(result.Any(), Is.True); Assert.That(result.FirstOrDefault().Skus.FirstOrDefault().Sku, Is.EqualTo(sku)); } }); 5.Times(i => { using (mp.Step("find by timestamp " + i)) { var result = storage.LoadValues(new[] { "en-US" }, fromDateTime: DateTime.Now.AddMonths(-1), tillDateTime: DateTime.Now).ToList(); Assert.That(result, Is.Not.Null); Assert.That(result.Any(), Is.True); } }); Log.Debug($"trace: {mp.RenderPlainText()}"); MiniProfiler.Stop(); }
public void Test2() { var options = new StorageOptions(new ConnectionStrings().Get("XtricateTestSqlDb"), schemaName: "StorageTests") { BufferedLoad = false }; var connectionFactory = new SqlConnectionFactory(); var storage = new DocStorage <MimeMessage>(connectionFactory, options, new SqlBuilder(), new JsonNetSerializer(), new Md5Hasher()); // REGISTER templates - all templates registered in kernel var engine = new TemplateEngine( new TemplateFactory( new[] { new TemplateDefinition { Key = "OrderConfirmation", Tags = new[] { "shop", "de-DE" }, //Culture = CultureInfo.GetCultureInfo("de-DE"), TemplateType = typeof(OrderConfirmationTemplate), ModelType = typeof(OrderConfirmationModel), } }), new PropertyBag <IDictionary <string, string> > { { CultureInfo.GetCultureInfo("de-DE").Name, new Dictionary <string, string> { { "welcome", "Wilkommen" } } }, { CultureInfo.GetCultureInfo("nl-NL").Name, new Dictionary <string, string> { { "welcome", "Welkom" } } } }); // CREATE the template based on a model (MAILSERVICE) var model = new OrderConfirmationModel { FirstName = "John", LastName = "Doe", DeliveryDate = DateTime.Now.AddDays(2), Items = new List <OrderItemModel> { new OrderItemModel { Name = "product1", Price = 9.99m, Quantity = 2, Sku = "sku1" }, new OrderItemModel { Name = "product2", Price = 3.99m, Quantity = 4, Sku = "sku2" }, } }; var templ = engine.GetTemplate(model, "OrderConfirmation", new[] { "shop", "de-DE" }, "de-DE"); Assert.That(templ, Is.Not.Null); Assert.That(templ.Model, Is.Not.Null); var body = templ.ToString(); Assert.That(body, Is.Not.Null.Or.Empty); Assert.That(templ.OutProperties.Any()); Assert.That(templ.OutProperties.ContainsKey("subject")); Trace.WriteLine(body); Trace.WriteLine(templ.OutProperties["subject"]); // CREATE the message (MAILSERVICE) var message = new MimeMessage(); message.Subject = templ.OutProperties["subject"]; message.From.Add(new MailboxAddress("Joey", "*****@*****.**")); message.To.Add(new MailboxAddress("Alice", "*****@*****.**")); var builder = new BodyBuilder { HtmlBody = body }; message.Body = builder.ToMessageBody(); //message.Attachments // STORE message in docset (MAILSERVICE) var key = new Random().Next(10000, 99999); var messageStream = new MemoryStream(); message.WriteTo(messageStream); Assert.That(messageStream, Is.Not.Null); messageStream.Position = 0; storage.Upsert(key, messageStream, new[] { "en-US" }); // LOAD message from docst (JOB) message = MimeMessage.Load(storage.LoadData(key, new[] { "en-US" }).FirstOrDefault()); Assert.That(message, Is.Not.Null); // SEND the docset message (JOB) using (var client = new SmtpClient(new ProtocolLogger("smtp.log"))) { client.Connect("localhost", 25, SecureSocketOptions.None); //client.Authenticate("username", "password"); client.Send(message); client.Disconnect(true); } }
public void FindTest(string connectionName, string databaseName, string schemaName) { var options = new StorageOptions(new ConnectionStrings().Get(connectionName), databaseName: databaseName, schemaName: schemaName) { BufferedLoad = false}; var connectionFactory = new SqlConnectionFactory(); var indexMap = TestDocumentIndexMap; var storage = new DocStorage<TestDocument>(connectionFactory, options, new SqlBuilder(), new JsonNetSerializer(), new Md5Hasher(), indexMap); MiniProfiler.Start(); var mp = MiniProfiler.Current; Log.Debug($"pre count: {storage.Count(new[] {"en-US"})}"); var key = DateTime.Now.Epoch() + new Random().Next(10000, 99999) + "c"; var name = "NEWNAME" + key; var sku = ""; using (mp.Step("insert ")) { var document = new Fixture().Create<TestDocument>(); document.Name = name; sku = document.Skus.FirstOrDefault().Sku; dynamic dDocument = document; dDocument.Dyn = "dynamic property"; var result1 = storage.Upsert(key, document, new[] {"en-US"}); Assert.That(result1, Is.EqualTo(StorageAction.Inserted)); Log.Debug("newDoc: " + document.Name); } var count = storage.Count(new[] { "en-US" }); var keys = storage.LoadKeys(new[] { "en-US" }).ToList(); Assert.That(keys, Is.Not.Null); Assert.That(keys.Any(), Is.True); Assert.That(count, Is.EqualTo(keys.Count())); 5.Times(i => { using (mp.Step("find no non-existing by SKU criteria/tags " + i)) { var criterias = new List<Criteria> { new Criteria("sku", CriteriaOperator.Eq, "XYZ_SKU") }; var result = storage.LoadValues(new[] { "en-US" }, criterias).ToList(); Assert.That(result, Is.Null.Or.Empty); } }); 5.Times(i => { using (mp.Step("find by KEY/tags " + i)) { var result = storage.LoadValues(key, new[] {"en-US"}).ToList(); Assert.That(result, Is.Not.Null); Assert.That(result.Any(), Is.True); Assert.That(result.FirstOrDefault().Name, Is.EqualTo(name)); } }); 5.Times(i => { using (mp.Step("find by NAME criteria/tags " + i)) { var criterias = new List<Criteria> {new Criteria("name", CriteriaOperator.Eq, name)}; var result = storage.LoadValues(new[] {"en-US"}, criterias).ToList(); Assert.That(result, Is.Not.Null); Assert.That(result.Any(), Is.True); Assert.That(result.FirstOrDefault().Name, Is.EqualTo(name)); } }); 5.Times(i => { using (mp.Step("find by NAME with sql delimiter character " + i)) { var criterias = new List<Criteria> { new Criteria("name", CriteriaOperator.Eq, "'") }; var result = storage.LoadValues(new[] { "en-US" }, criterias).ToList(); Assert.That(result, Is.Null.Or.Empty); } }); 5.Times(i => { using (mp.Step("find by SKU criteria/tags " + i)) { var criterias = new List<Criteria> {new Criteria("sku", CriteriaOperator.Contains, sku)}; var result = storage.LoadValues(new[] {"en-US"}, criterias).ToList(); Assert.That(result, Is.Not.Null); Assert.That(result.Any(), Is.True); Assert.That(result.FirstOrDefault().Skus.FirstOrDefault().Sku, Is.EqualTo(sku)); } }); 5.Times(i => { using (mp.Step("find by timestamp " + i)) { var result = storage.LoadValues(new[] { "en-US" }, fromDateTime:DateTime.Now.AddMonths(-1), tillDateTime:DateTime.Now).ToList(); Assert.That(result, Is.Not.Null); Assert.That(result.Any(), Is.True); } }); Log.Debug($"trace: {mp.RenderPlainText()}"); MiniProfiler.Stop(); }