public async Task ConfigureWriteTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginHive.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 ConfigureWriteRequest { Form = new ConfigurationFormRequest { DataJson = JsonConvert.SerializeObject(new ConfigureWriteFormData { StoredProcedure = "\"public\".\"INSERT_ACTOR\"" }) } }; // act client.Connect(connectRequest); var response = client.ConfigureWrite(request); // assert Assert.IsType <ConfigureWriteResponse>(response); // 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(); }