public async Task ReadStreamQuerySchemaTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginAmazonAurora.Plugin.Plugin()) }, Ports = { new ServerPort("localhost", 0, ServerCredentials.Insecure) } }; server.Start(); var port = server.Ports.First().BoundPort; var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure); var client = new Publisher.PublisherClient(channel); var schema = GetTestSchema("test", "test", $"SELECT * FROM `classicmodels`.`orders`"); var connectRequest = GetConnectSettings(); var schemaRequest = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, ToRefresh = { schema } }; var request = new ReadRequest() { DataVersions = new DataVersions { JobId = "test" }, JobId = "test", }; // act client.Connect(connectRequest); var schemasResponse = client.DiscoverSchemas(schemaRequest); request.Schema = schemasResponse.Schemas[0]; var response = client.ReadStream(request); var responseStream = response.ResponseStream; var records = new List <Record>(); while (await responseStream.MoveNext()) { records.Add(responseStream.Current); } // assert Assert.Equal(326, records.Count); var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson); Assert.Equal((long)10100, record["`orderNumber`"]); Assert.Equal(DateTime.Parse("2003-01-06"), record["`orderDate`"]); Assert.Equal(DateTime.Parse("2003-01-13"), record["`requiredDate`"]); Assert.Equal(DateTime.Parse("2003-01-10"), record["`shippedDate`"]); Assert.Equal("Shipped", record["`status`"]); Assert.Equal("", record["`comments`"]); Assert.Equal((long)363, record["`customerNumber`"]); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task ReadStreamLimitTest() { // setup PrepareTestEnvironment(false); Server server = new Server { Services = { Publisher.BindService(new PluginAunsight.Plugin.Plugin()) }, Ports = { new ServerPort("localhost", 0, ServerCredentials.Insecure) } }; server.Start(); var port = server.Ports.First().BoundPort; var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure); var client = new Publisher.PublisherClient(channel); var connectRequest = GetConnectSettings(); var query = $@"SELECT h.ssn, h.firstname, m.risk_score, r.factor_code, r.factor_text FROM ReadDirectory_CONSUMER h LEFT OUTER JOIN ReadDirectory_RISK_MODEL m ON h.GLOBAL_KEY = m.GLOBAL_KEY LEFT OUTER JOIN ReadDirectory_RISK_FACTOR r ON m.GLOBAL_KEY = r.GLOBAL_KEY"; var discoverRequest = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, ToRefresh = { GetTestSchema(query) }, }; var request = new ReadRequest() { Limit = 1, DataVersions = new DataVersions { JobId = "test" }, JobId = "test", }; // act client.Connect(connectRequest); var schemasResponse = client.DiscoverSchemas(discoverRequest); request.Schema = schemasResponse.Schemas[0]; var response = client.ReadStream(request); var responseStream = response.ResponseStream; var records = new List <Record>(); while (await responseStream.MoveNext()) { records.Add(responseStream.Current); } // assert Assert.Equal(1, records.Count); var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson); Assert.Equal("5164", record["ssn"]); Assert.Equal("string", record["firstname"]); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task ReadStreamLimitTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginSalesforce.Plugin.Plugin()) }, Ports = { new ServerPort("localhost", 0, ServerCredentials.Insecure) } }; server.Start(); var port = server.Ports.First().BoundPort; var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure); var client = new Publisher.PublisherClient(channel); var connectRequest = GetConnectSettings(); var request = new ReadRequest() { Schema = new Schema { Id = "Account", Properties = { new Property { Id = "Id", Type = PropertyType.String, IsKey = true }, new Property { Id = "Name", Type = PropertyType.String }, new Property { Id = "LastModifiedDate", Type = PropertyType.Datetime, IsUpdateCounter = true } } }, Limit = 1 }; // act client.Connect(connectRequest); var response = client.ReadStream(request); var responseStream = response.ResponseStream; var records = new List <Record>(); while (await responseStream.MoveNext()) { records.Add(responseStream.Current); } // assert Assert.Single(records); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task ReadStreamTableSchemaTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginAmazonAurora.Plugin.Plugin()) }, Ports = { new ServerPort("localhost", 0, ServerCredentials.Insecure) } }; server.Start(); var port = server.Ports.First().BoundPort; var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure); var client = new Publisher.PublisherClient(channel); var schema = GetTestSchema("`classicmodels`.`customers`", "classicmodels.customers"); var connectRequest = GetConnectSettings(); var schemaRequest = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, ToRefresh = { schema } }; var request = new ReadRequest() { DataVersions = new DataVersions { JobId = "test" }, JobId = "test", }; // act client.Connect(connectRequest); var schemasResponse = client.DiscoverSchemas(schemaRequest); request.Schema = schemasResponse.Schemas[0]; var response = client.ReadStream(request); var responseStream = response.ResponseStream; var records = new List <Record>(); while (await responseStream.MoveNext()) { records.Add(responseStream.Current); } // assert Assert.Equal(122, records.Count); var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson); Assert.Equal((long)103, record["`customerNumber`"]); Assert.Equal("Atelier graphique", record["`customerName`"]); Assert.Equal("Schmitt", record["`contactLastName`"]); Assert.Equal("Carine", record["`contactFirstName`"]); Assert.Equal("40.32.2555", record["`phone`"]); Assert.Equal("54, rue Royale", record["`addressLine1`"]); Assert.Equal("", record["`addressLine2`"]); Assert.Equal("Nantes", record["`city`"]); Assert.Equal("", record["`state`"]); Assert.Equal("44000", record["`postalCode`"]); Assert.Equal("France", record["`country`"]); Assert.Equal((long)1370, record["`salesRepEmployeeNumber`"]); Assert.Equal("21000.00", record["`creditLimit`"]); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task ReadStreamRealTimeTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginSalesforce.Plugin.Plugin()) }, Ports = { new ServerPort("localhost", 0, ServerCredentials.Insecure) } }; server.Start(); var port = server.Ports.First().BoundPort; var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure); var client = new Publisher.PublisherClient(channel); var configureRequest = new ConfigureRequest { TemporaryDirectory = "../../../Temp", PermanentDirectory = "../../../Perm", LogDirectory = "../../../Logs", DataVersions = new DataVersions(), LogLevel = LogLevel.Debug }; var schema = GetTestSchema(null, @"Lead", @"Lead"); // var schema = GetTestSchema(null, @"LeadUpdates", @"LeadUpdates", "Select Id, Name FROM Lead"); // var schema = GetTestSchema(null, @"/topic/LeadUpdates", @"/topic/LeadUpdates", "Select Id, Name FROM Lead"); var connectRequest = GetConnectSettings(); var schemaRequest = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, ToRefresh = { schema } }; var realTimeSettings = new RealTimeSettings { ChannelName = "LeadsAll", BatchWindowSeconds = 5 }; var request = new ReadRequest() { DataVersions = new DataVersions { JobId = "test", JobDataVersion = 1 }, JobId = "test", RealTimeStateJson = JsonConvert.SerializeObject(new RealTimeState()), RealTimeSettingsJson = JsonConvert.SerializeObject(realTimeSettings), }; // act var records = new List <Record>(); try { client.Configure(configureRequest); client.Connect(connectRequest); var schemasResponse = client.DiscoverSchemas(schemaRequest); request.Schema = schemasResponse.Schemas[0]; var cancellationToken = new CancellationTokenSource(); cancellationToken.CancelAfter(10000); var response = client.ReadStream(request, null, null, cancellationToken.Token); var responseStream = response.ResponseStream; while (await responseStream.MoveNext()) { records.Add(responseStream.Current); } } catch (Exception e) { Assert.Contains("Status(StatusCode=\"Cancelled\", Detail=\"Cancelled\"", e.Message); } // assert Assert.Equal(1023, records.Where(r => r.Action == Record.Types.Action.Upsert).ToList().Count); var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson); // Assert.Equal("~", record["tilde"]); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task ReadStreamTest() { // setup var mockHttp = GetMockHttpMessageHandler(); Server server = new Server { Services = { Publisher.BindService(new PluginSalesforce.Plugin.Plugin(mockHttp.ToHttpClient())) }, Ports = { new ServerPort("localhost", 0, ServerCredentials.Insecure) } }; server.Start(); var port = server.Ports.First().BoundPort; var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure); var client = new Publisher.PublisherClient(channel); var connectRequest = GetConnectSettings(); var request = new ReadRequest() { Schema = new Schema { Id = "Account", Properties = { new Property { Id = "Id", Type = PropertyType.String, IsKey = true, PublisherMetaJson = JsonConvert.SerializeObject(new FieldObject { Updateable = false }) }, new Property { Id = "Name", Type = PropertyType.String, PublisherMetaJson = JsonConvert.SerializeObject(new FieldObject { Updateable = true }) }, new Property { Id = "LastModifiedDate", Type = PropertyType.Datetime, IsUpdateCounter = true, PublisherMetaJson = JsonConvert.SerializeObject(new FieldObject { Updateable = false }) } } } }; // act client.Connect(connectRequest); var response = client.ReadStream(request); var responseStream = response.ResponseStream; var records = new List <Record>(); while (await responseStream.MoveNext()) { records.Add(responseStream.Current); } // assert Assert.Equal(12, records.Count); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task ReadStreamRealTimeTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginSalesforce.Plugin.Plugin()) }, Ports = { new ServerPort("localhost", 0, ServerCredentials.Insecure) } }; server.Start(); var port = server.Ports.First().BoundPort; var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure); var client = new Publisher.PublisherClient(channel); var schema = new Schema(); schema.Query = "SELECT Id, Name from Lead"; var connectRequest = GetConnectSettings(); var schemaRequest = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, ToRefresh = { schema } }; var request = new ReadRequest() { DataVersions = new DataVersions { JobId = "test", JobDataVersion = 1 }, JobId = "test", RealTimeStateJson = JsonConvert.SerializeObject(new RealTimeState()), RealTimeSettingsJson = JsonConvert.SerializeObject(new RealTimeSettings()), }; // act var records = new List <Record>(); try { client.Connect(connectRequest); var schemasResponse = client.DiscoverSchemas(schemaRequest); request.Schema = schemasResponse.Schemas[0]; var cancellationToken = new CancellationTokenSource(); cancellationToken.CancelAfter(5000); var response = client.ReadStream(request, null, null, cancellationToken.Token); var responseStream = response.ResponseStream; while (await responseStream.MoveNext()) { records.Add(responseStream.Current); } } catch (Exception e) { Assert.Equal("Status(StatusCode=Cancelled, Detail=\"Cancelled\")", e.Message); } // assert Assert.Equal(3, records.Count); var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson); // Assert.Equal("~", record["tilde"]); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task ReadStreamSubscriberTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginHubspot.Plugin.Plugin()) }, Ports = { new ServerPort("localhost", 0, ServerCredentials.Insecure) } }; server.Start(); var port = server.Ports.First().BoundPort; var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure); var client = new Publisher.PublisherClient(channel); var schema = GetTestSchema("ActiveSubscribers"); var connectRequest = GetConnectSettings(); var schemaRequest = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, ToRefresh = { schema } }; var request = new ReadRequest() { DataVersions = new DataVersions { JobId = "test" }, JobId = "test", }; // act client.Connect(connectRequest); var schemasResponse = client.DiscoverSchemas(schemaRequest); request.Schema = schemasResponse.Schemas[0]; var response = client.ReadStream(request); var responseStream = response.ResponseStream; var records = new List <Record>(); while (await responseStream.MoveNext()) { records.Add(responseStream.Current); } // assert Assert.Equal(2, records.Count); var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson); // Assert.Equal("~", record["tilde"]); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task ReadStreamQuerySchemaTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginCassandra.Plugin.Plugin()) }, Ports = { new ServerPort("localhost", 0, ServerCredentials.Insecure) } }; server.Start(); var port = server.Ports.First().BoundPort; var channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure); var client = new Publisher.PublisherClient(channel); // var schema = GetTestSchema("test", "test", $"SELECT * FROM `classicmodels`.`orders`"); var schema = GetTestSchema("\"system_schema\".\"tables\"", "system_schema.tables", $"SELECT * FROM \"system_schema\".\"tables\""); var connectRequest = GetConnectSettings(); var schemaRequest = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, ToRefresh = { schema } }; var request = new ReadRequest() { DataVersions = new DataVersions { JobId = "test" }, JobId = "test", }; // act client.Connect(connectRequest); var schemasResponse = client.DiscoverSchemas(schemaRequest); request.Schema = schemasResponse.Schemas[0]; var response = client.ReadStream(request); var responseStream = response.ResponseStream; var records = new List <Record>(); while (await responseStream.MoveNext()) { records.Add(responseStream.Current); } // assert Assert.Equal(41, records.Count); var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson); Assert.Equal("test", record["keyspace_name"]); Assert.Equal(0.01, record["bloom_filter_fp_chance"]); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }