public async Task PrepareWriteTest() { // 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 PrepareWriteRequest() { 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 } } }, CommitSlaSeconds = 1 }; // act client.Connect(connectRequest); var response = client.PrepareWrite(request); // assert Assert.IsType <PrepareWriteResponse>(response); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task PrepareWriteTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginMariaDB.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 PrepareWriteRequest() { Schema = GetTestSchema(), CommitSlaSeconds = 1, Replication = new ReplicationWriteRequest { SettingsJson = JsonConvert.SerializeObject(new ConfigureReplicationFormData { SchemaName = "test", GoldenTableName = "gr_test", VersionTableName = "vr_test" }) }, DataVersions = new DataVersions { JobId = "jobUnitTest", ShapeId = "shapeUnitTest", JobDataVersion = 1, ShapeDataVersion = 2 } }; // act client.Connect(connectRequest); var response = client.PrepareWrite(request); // assert Assert.IsType <PrepareWriteResponse>(response); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task PrepareWriteTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginSage.Plugin.Plugin(GetMockSessionFactory())) }, 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 PrepareWriteRequest { Schema = new Schema { Name = "test", PublisherMetaJson = "{\"Module\":\"test module\"}" }, CommitSlaSeconds = 1, DataVersions = new DataVersions { JobId = "test", ShapeId = "test", JobDataVersion = 1, ShapeDataVersion = 1 } }; // act client.Connect(connectRequest); var response = client.PrepareWrite(request); // assert Assert.IsType <PrepareWriteResponse>(response); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task WriteTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginCampaigner.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("UpsertSubscribers"); var connectRequest = GetConnectSettings(); var schemaRequest = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, ToRefresh = { schema } }; var records = new List <Record>() { { new Record { Action = Record.Types.Action.Upsert, CorrelationId = "test", RecordId = "record1", DataJson = "{\"Account PKey\":\"\",\"ZZN9X\":\"\",\"FirstName\":\"Molly\",\"LastName\":\"Male\",\"Owner Email\":null,\"Owner First Name\":\"Jenna\",\"Owner Last Name\":\"Jenna\",\"Phone\":\"(263) 83-25052\",\"IPAddress\":null,\"EmailAddress\":\"[email protected]\",\"Lists\":\"[]\"}", } } }; var recordAcks = new List <RecordAck>(); // act client.Connect(connectRequest); var schemasResponse = client.DiscoverSchemas(schemaRequest); var prepareWriteRequest = new PrepareWriteRequest() { Schema = schemasResponse.Schemas[0], CommitSlaSeconds = 1000, DataVersions = new DataVersions { JobId = "jobUnitTest", ShapeId = "shapeUnitTest", JobDataVersion = 1, ShapeDataVersion = 1 } }; client.PrepareWrite(prepareWriteRequest); using (var call = client.WriteStream()) { var responseReaderTask = Task.Run(async() => { while (await call.ResponseStream.MoveNext()) { var ack = call.ResponseStream.Current; recordAcks.Add(ack); } }); foreach (Record record in records) { await call.RequestStream.WriteAsync(record); } await call.RequestStream.CompleteAsync(); await responseReaderTask; } // assert Assert.Single(recordAcks); Assert.Equal("", recordAcks[0].Error); Assert.Equal("test", recordAcks[0].CorrelationId); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task WriteTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginMariaDB.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 configureRequest = new ConfigureWriteRequest { Form = new ConfigurationFormRequest { DataJson = JsonConvert.SerializeObject(new ConfigureWriteFormData { StoredProcedure = "`test`.`UpsertIntoTestTable`" }) } }; var records = new List <Record>() { { new Record { Action = Record.Types.Action.Upsert, CorrelationId = "test", RecordId = "record1", DataJson = "{\"id\":\"1\",\"name\":\"Test First\"}", } } }; var recordAcks = new List <RecordAck>(); // act client.Connect(connectRequest); var configureResponse = client.ConfigureWrite(configureRequest); var prepareWriteRequest = new PrepareWriteRequest() { Schema = configureResponse.Schema, CommitSlaSeconds = 1000, DataVersions = new DataVersions { JobId = "jobUnitTest", ShapeId = "shapeUnitTest", JobDataVersion = 1, ShapeDataVersion = 1 } }; client.PrepareWrite(prepareWriteRequest); using (var call = client.WriteStream()) { var responseReaderTask = Task.Run(async() => { while (await call.ResponseStream.MoveNext()) { var ack = call.ResponseStream.Current; recordAcks.Add(ack); } }); foreach (Record record in records) { await call.RequestStream.WriteAsync(record); } await call.RequestStream.CompleteAsync(); await responseReaderTask; } // assert Assert.Single(recordAcks); Assert.Equal("", recordAcks[0].Error); Assert.Equal("test", recordAcks[0].CorrelationId); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task ReplicationWriteTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginMariaDB.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 prepareWriteRequest = new PrepareWriteRequest() { Schema = GetTestReplicationSchema(), CommitSlaSeconds = 1000, Replication = new ReplicationWriteRequest { SettingsJson = JsonConvert.SerializeObject(new ConfigureReplicationFormData { SchemaName = "test", GoldenTableName = "gr_test", VersionTableName = "vr_test" }) }, DataVersions = new DataVersions { JobId = "jobUnitTest", ShapeId = "shapeUnitTest", JobDataVersion = 1, ShapeDataVersion = 1 } }; var records = new List <Record>() { { new Record { Action = Record.Types.Action.Upsert, CorrelationId = "test", RecordId = "record1", DataJson = $"{{\"Id\":1,\"Name\":\"Test Company\",\"DateTime\":\"{DateTime.Today}\",\"Date\":\"{DateTime.Now.Date}\",\"Time\":\"{DateTime.Now:hh:mm:ss}\",\"Decimal\":\"13.04\"}}", Versions = { new RecordVersion { RecordId = "version1", DataJson = $"{{\"Id\":1,\"Name\":\"Test Company\",\"DateTime\":\"{DateTime.Now}\",\"Date\":\"{DateTime.Now.Date}\",\"Time\":\"{DateTime.Now:hh:mm:ss}\",\"Decimal\":\"13.04\"}}", } } } } }; var recordAcks = new List <RecordAck>(); // act client.Connect(connectRequest); client.PrepareWrite(prepareWriteRequest); using (var call = client.WriteStream()) { var responseReaderTask = Task.Run(async() => { while (await call.ResponseStream.MoveNext()) { var ack = call.ResponseStream.Current; recordAcks.Add(ack); } }); foreach (Record record in records) { await call.RequestStream.WriteAsync(record); } await call.RequestStream.CompleteAsync(); await responseReaderTask; } // assert Assert.Single(recordAcks); Assert.Equal("", recordAcks[0].Error); Assert.Equal("test", recordAcks[0].CorrelationId); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task WriteStreamReplicationTest() { // set up Server server = new Server { Services = { Publisher.BindService(new Plugin.Plugin(GetMockHttpMessageHandler().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 prepareRequest = new PrepareWriteRequest() { Schema = new Schema { Id = "Test", Properties = { new Property { Id = "_id", Name = "_id", Type = PropertyType.String, }, new Property { Id = "title", Name = "title", Type = PropertyType.String } } }, CommitSlaSeconds = 10, Replication = new ReplicationWriteRequest { SettingsJson = "{\"DatabaseName\":\"DatabaseName\"}", } }; var records = GetTestRecords(); var recordAcks = new List <RecordAck>(); // act client.Connect(connectRequest); client.PrepareWrite(prepareRequest); using (var call = client.WriteStream()) { var responseReaderTask = Task.Run(async() => { while (await call.ResponseStream.MoveNext()) { var ack = call.ResponseStream.Current; recordAcks.Add(ack); } }); foreach (Record record in records) { await call.RequestStream.WriteAsync(record); } await call.RequestStream.CompleteAsync(); await responseReaderTask; } // assert Assert.Single(recordAcks); Assert.Equal("test", recordAcks[0].CorrelationId); // clean up await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task WriteStreamTest() { // 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 discoverSchemasRequest = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, ToRefresh = { new Schema { Id = "Account" } } }; var prepareRequest = new PrepareWriteRequest() { 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 } } }, CommitSlaSeconds = 5 }; var records = new List <Record>() { { new Record { Action = Record.Types.Action.Upsert, CorrelationId = "test", DataJson = "{\"Id\":1,\"Name\":\"Test Company\",\"LastModifiedDate\":\"4/10/2019\"}" } } }; var recordAcks = new List <RecordAck>(); // act client.Connect(connectRequest); client.DiscoverSchemas(discoverSchemasRequest); client.PrepareWrite(prepareRequest); using (var call = client.WriteStream()) { var responseReaderTask = Task.Run(async() => { while (await call.ResponseStream.MoveNext()) { var ack = call.ResponseStream.Current; recordAcks.Add(ack); } }); foreach (Record record in records) { await call.RequestStream.WriteAsync(record); } await call.RequestStream.CompleteAsync(); await responseReaderTask; } // assert Assert.Single(recordAcks); Assert.Equal("", recordAcks[0].Error); Assert.Equal("test", recordAcks[0].CorrelationId); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task WriteTest() { // 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("UpsertCompanies"); var connectRequest = GetConnectSettings(); var schemaRequest = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, ToRefresh = { schema } }; var records = new List <Record>() { { new Record { Action = Record.Types.Action.Upsert, CorrelationId = "test", RecordId = "record1", DataJson = "{\"createdate\":\"2021-05-06T16:55:49.689Z\",\"domain\":\"sample.com\",\"hs_lastmodifieddate\":\"2021-05-06T16:56:10.131Z\",\"hs_object_id\":\"6021949042\",\"name\":\"Updated Sample Company\",\"hs_unique_creation_key\":\"6021949042\"}", } }, { new Record { Action = Record.Types.Action.Upsert, CorrelationId = "test", RecordId = "record2", DataJson = "{\"domain\":\"newsample.com\",\"name\":\"New Sample Company\"}", } } }; var recordAcks = new List <RecordAck>(); // act client.Connect(connectRequest); var schemasResponse = client.DiscoverSchemas(schemaRequest); var prepareWriteRequest = new PrepareWriteRequest() { Schema = schemasResponse.Schemas[0], CommitSlaSeconds = 1000, DataVersions = new DataVersions { JobId = "jobUnitTest", ShapeId = "shapeUnitTest", JobDataVersion = 1, ShapeDataVersion = 1 } }; client.PrepareWrite(prepareWriteRequest); using (var call = client.WriteStream()) { var responseReaderTask = Task.Run(async() => { while (await call.ResponseStream.MoveNext()) { var ack = call.ResponseStream.Current; recordAcks.Add(ack); } }); foreach (Record record in records) { await call.RequestStream.WriteAsync(record); } await call.RequestStream.CompleteAsync(); await responseReaderTask; } // assert Assert.Equal(2, recordAcks.Count); Assert.Equal("", recordAcks[0].Error); Assert.Equal("test", recordAcks[0].CorrelationId); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task WriteStreamTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginSage.Plugin.Plugin(GetMockSessionFactory())) }, 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 prepareRequest = new PrepareWriteRequest() { Schema = GetTestSchema(), CommitSlaSeconds = 1, DataVersions = new DataVersions { JobId = "test", ShapeId = "test", JobDataVersion = 1, ShapeDataVersion = 1 } }; var records = GetTestRecords(); var recordAcks = new List <RecordAck>(); // act client.Connect(connectRequest); client.PrepareWrite(prepareRequest); using (var call = client.WriteStream()) { var responseReaderTask = Task.Run(async() => { while (await call.ResponseStream.MoveNext()) { var ack = call.ResponseStream.Current; recordAcks.Add(ack); } }); foreach (Record record in records) { await call.RequestStream.WriteAsync(record); } await call.RequestStream.CompleteAsync(); await responseReaderTask; } // assert Assert.Equal(2, recordAcks.Count); Assert.Equal("", recordAcks[0].Error); Assert.Equal("test", recordAcks[0].CorrelationId); Assert.Equal("error", recordAcks[1].Error); Assert.Equal("more-test", recordAcks[1].CorrelationId); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task WriteStreamTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginRJGWebsite.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 discoverRequest = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, ToRefresh = { new Schema { Id = "Classes - Write" } } }; client.Connect(connectRequest); var discoverResponse = client.DiscoverSchemas(discoverRequest); var schema = discoverResponse.Schemas[0]; var prepareRequest = new PrepareWriteRequest() { Schema = schema, CommitSlaSeconds = 1000, DataVersions = new DataVersions { JobId = "jobUnitTest", ShapeId = "shapeUnitTest", JobDataVersion = 1, ShapeDataVersion = 1 } }; var records = new List <Record>() { { new Record { Action = Record.Types.Action.Upsert, CorrelationId = "test", DataJson = "{ \"id\": 215657, \"sku\": \"310000000003\", \"course_sku\": \"pc-b\", \"start_date\": \"2020-07-01\", \"end_date\": \"2020-07-08\", \"location_city\": \"Online\", \"location_state\": \"\", \"language\": \"Spanish\", \"affiliation\": \"USA/Canada\", \"visible\": true, \"open_seats\": null, \"price\": \"2000\", \"currency\": \"EUR\", \"status\": \"publish\", \"date_created\": \"2020-03-30T14:36:43\", \"date_created_gmt\": \"2020-03-30T18:36:43\", \"date_modified\": \"2020-05-12T09:57:08\", \"date_modified_gmt\": \"2020-05-12T13:57:08\" }" } } }; var recordAcks = new List <RecordAck>(); // act client.PrepareWrite(prepareRequest); using (var call = client.WriteStream()) { var responseReaderTask = Task.Run(async() => { while (await call.ResponseStream.MoveNext()) { var ack = call.ResponseStream.Current; recordAcks.Add(ack); } }); foreach (Record record in records) { await call.RequestStream.WriteAsync(record); } await call.RequestStream.CompleteAsync(); await responseReaderTask; } // assert Assert.Single(recordAcks); Assert.Equal("", recordAcks[0].Error); Assert.Equal("test", recordAcks[0].CorrelationId); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }