public async Task DiscoverSchemasAllTest() { // 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 configureRequest = new ConfigureRequest { TemporaryDirectory = "../../../Temp", PermanentDirectory = "../../../Perm", LogDirectory = "../../../Logs", DataVersions = new DataVersions(), LogLevel = LogLevel.Debug }; var connectRequest = GetConnectSettings(); var request = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.All, }; // act client.Configure(configureRequest); client.Connect(connectRequest); var response = client.DiscoverSchemas(request); // assert Assert.IsType <DiscoverSchemasResponse>(response); Assert.Equal(2, response.Schemas.Count); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task ReadStreamSftpTest() { // 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 configureRequest = new ConfigureRequest { TemporaryDirectory = "../../../Temp", PermanentDirectory = "../../../Perm", LogDirectory = "../../../Logs", DataVersions = new DataVersions(), LogLevel = LogLevel.Debug }; var connectRequest = GetConnectSettings(null, 8, "*.xls", false, false, null, null, true); var schemaRequest = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.All, }; var settings = GetSettings(); var schema = GetTestSchema($"SELECT * FROM [{Constants.SchemaName}].[ReadDirectory]"); schema.PublisherMetaJson = JsonConvert.SerializeObject(new SchemaPublisherMetaJson { RootPath = settings.RootPaths.First() }); var request = new ReadRequest() { DataVersions = new DataVersions { JobId = "test" }, JobId = "test", }; // act client.Configure(configureRequest); 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(618, records.Count); var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson); Assert.Equal("90371", record["HCPCS Code"]); Assert.Equal("Hep b ig im", record["Short Description"]); Assert.Equal("1 ML", record["HCPCS Code Dosage"]); Assert.Equal("115.892", record["Payment Limit"]); Assert.Equal("", record["Vaccine AWP%"]); Assert.Equal("", record["Vaccine Limit"]); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task ReadStreamSftpTest() { // 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 configureRequest = new ConfigureRequest { TemporaryDirectory = "../../../Temp", PermanentDirectory = "../../../Perm", LogDirectory = "../../../Logs", DataVersions = new DataVersions(), LogLevel = LogLevel.Debug }; var connectRequest = GetConnectSettings(null, 0, null, false, false, true); var query = $@"SELECT h.ssn, h.firstname, m.risk_score, r.factor_code, r.factor_text FROM xmltest_CONSUMER h LEFT OUTER JOIN xmltest_RISK_MODEL m ON h.GLOBAL_KEY = m.GLOBAL_KEY LEFT OUTER JOIN xmltest_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() { DataVersions = new DataVersions { JobId = "test" }, JobId = "test", }; // act client.Configure(configureRequest); 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(7, records.Count); var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson); Assert.Equal("6075", record["ssn"]); Assert.Equal("string", record["firstname"]); // 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(); }