public async Task ReadStreamLimitTest() { // 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("\"tks\".\"posts\"", "tks.posts"); 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", Limit = 10 }; // 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(3, records.Count); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task DiscoverSchemasRefreshTest() { // 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 discoverAllRequest = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.All, SampleSize = 10 }; var request = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, ToRefresh = { GetTestSchema($"SELECT * FROM [{Constants.SchemaName}].[ReadDirectory_VEH_POL]") }, }; // act client.Connect(connectRequest); client.DiscoverSchemas(discoverAllRequest); var response = client.DiscoverSchemas(request); // assert Assert.IsType <DiscoverSchemasResponse>(response); Assert.Single(response.Schemas); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task DiscoverSchemasRefreshQueryTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginBigQuery.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 DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, SampleSize = 10, ToRefresh = { GetTestSchema("`testdata`.`table1`", "testdata.table1", $"SELECT * FROM `testdata`.`table1`") } }; // act client.Connect(connectRequest); var response = client.DiscoverSchemas(request); // assert Assert.IsType <DiscoverSchemasResponse>(response); Assert.Single(response.Schemas); var schema = response.Schemas[0]; Assert.Equal($"`testdata`.`table1`", schema.Id); Assert.Equal("testdata.table1", schema.Name); Assert.Equal($"SELECT * FROM `testdata`.`table1`", schema.Query); Assert.Equal(10, schema.Sample.Count); Assert.Equal(6, schema.Properties.Count); var property = schema.Properties[0]; Assert.Equal("col1", property.Id); Assert.Equal("col1", property.Name); Assert.Equal("", property.Description); Assert.Equal(PropertyType.String, property.Type); Assert.False(property.IsKey); Assert.True(property.IsNullable); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task DiscoverSchemasAllTest() { // 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 request = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.All, SampleSize = 10 }; // act client.Connect(connectRequest); var response = client.DiscoverSchemas(request); // assert Assert.IsType <DiscoverSchemasResponse>(response); Assert.Single(response.Schemas); var schema = response.Schemas[0]; Assert.Equal($"[{Constants.SchemaName}].[ReadDirectory_VEH_POL]", schema.Id); Assert.Equal("ReadDirectory_VEH_POL", schema.Name); Assert.Equal($"SELECT * FROM [{Constants.SchemaName}].[ReadDirectory_VEH_POL]", schema.Query); // Assert.Equal(Count.Types.Kind.Exact, schema.Count.Kind); // Assert.Equal(1000, schema.Count.Value); Assert.Equal(10, schema.Sample.Count); Assert.Equal(138, schema.Properties.Count); var property = schema.Properties[0]; Assert.Equal("VEH.NUM", property.Id); Assert.Equal("VEH.NUM", property.Name); Assert.Equal("", property.Description); Assert.Equal(PropertyType.String, property.Type); Assert.False(property.IsKey); Assert.True(property.IsNullable); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task DiscoverSchemasRefreshTableTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginOracleNet.Plugin.Plugin()) }, Ports = { new ServerPort("localhost", 0, ServerCredentials.Insecure) } }; server.Start(); int port = server.Ports.First().BoundPort; Channel channel = new Channel($"localhost:{port}", ChannelCredentials.Insecure); Publisher.PublisherClient client = new Publisher.PublisherClient(channel); var connectRequest = GetConnectSettings(); var request = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, SampleSize = 10, ToRefresh = { GetTestSchema(TestSchemaID, TestSchemaName) } }; // act client.Connect(connectRequest); var response = client.DiscoverSchemas(request); // assert Assert.IsType <DiscoverSchemasResponse>(response); Assert.Single(response.Schemas); var schema = response.Schemas[0]; Assert.Equal(TestSchemaID, schema.Id); Assert.Equal(TestSchemaName, schema.Name); Assert.Equal($"", schema.Query); Assert.Equal(TestSampleCount, schema.Sample.Count); Assert.Equal(TestPropertyCount, schema.Properties.Count); var property = schema.Properties[4]; Assert.Equal(TestPropertyID, property.Id); Assert.Equal(TestPropertyName, property.Name); Assert.Equal("", property.Description); Assert.Equal(PropertyType.String, property.Type); Assert.False(property.IsKey); Assert.True(property.IsNullable); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task ReadStreamTableSchemaTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginDb2.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() { DataVersions = new DataVersions { JobId = "test" }, JobId = "test", }; // act client.Connect(connectRequest); var schemas = client.DiscoverSchemas(new DiscoverSchemasRequest()); request.Schema = schemas.Schemas.First(); 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(1000, records.Count); var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson); Assert.Equal((long)1, record["\"ID\""]); Assert.Equal("Madison", record["\"FIRST_NAME\""]); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task DiscoverSchemasRefreshTableTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginSnowflake.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 DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, SampleSize = 10, ToRefresh = { GetTestSchema("\"PUBLIC\".\"MOCK_DATA\"", "PUBLIC.MOCK_DATA") } }; // act client.Connect(connectRequest); var response = client.DiscoverSchemas(request); // assert Assert.IsType <DiscoverSchemasResponse>(response); Assert.Equal(1, response.Schemas.Count); var schema = response.Schemas[0]; Assert.Equal($"\"PUBLIC\".\"MOCK_DATA\"", schema.Id); Assert.Equal("PUBLIC.MOCK_DATA", schema.Name); Assert.Equal($"", schema.Query); Assert.Equal(10, schema.Sample.Count); Assert.Equal(11, schema.Properties.Count); var property = schema.Properties[0]; Assert.Equal("\"ID\"", property.Id); Assert.Equal("ID", property.Name); Assert.Equal("", property.Description); Assert.Equal(PropertyType.Text, property.Type); Assert.False(property.IsKey); Assert.True(property.IsNullable); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task DiscoverSchemasAllTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginBigQuery.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 DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.All, SampleSize = 10 }; // act client.Connect(connectRequest); var response = client.DiscoverSchemas(request); // assert Assert.IsType <DiscoverSchemasResponse>(response); Assert.Equal(8, response.Schemas.Count); var schema = response.Schemas[0]; Assert.Equal($"`testdata`.`NaveegoReplicationMetaData`", schema.Id); Assert.Equal("testdata.NaveegoReplicationMetaData", schema.Name); Assert.Equal($"", schema.Query); Assert.Equal(2, schema.Sample.Count); Assert.Equal(5, schema.Properties.Count); var property = schema.Properties[0]; Assert.Equal("NaveegoJobId", property.Id); Assert.Equal("NaveegoJobId", property.Name); Assert.Equal("", property.Description); Assert.Equal(PropertyType.String, property.Type); Assert.False(property.IsKey); Assert.True(property.IsNullable); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task DiscoverSchemasRefreshTest() { // 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 request = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, ToRefresh = { GetTestSchema("DiscoverSchemas") } }; // act client.Connect(connectRequest); var response = client.DiscoverSchemas(request); // assert Assert.IsType <DiscoverSchemasResponse>(response); Assert.Single(response.Schemas); var schema = response.Schemas[0]; Assert.Equal("test", schema.Id); Assert.Equal("test", schema.Name); Assert.Equal(2, schema.Properties.Count); var firstProperty = schema.Properties[0]; Assert.Equal("_id", firstProperty.Id); Assert.Equal("_id", firstProperty.Name); Assert.Equal(PropertyType.String, firstProperty.Type); var secondProperty = schema.Properties[1]; Assert.Equal("title", secondProperty.Id); Assert.Equal("title", secondProperty.Name); Assert.Equal(PropertyType.String, secondProperty.Type); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task DiscoverSchemasRefreshTableTest() { // 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 connectRequest = GetConnectSettings(); var request = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, SampleSize = 10, ToRefresh = { GetTestSchema("`classicmodels`.`customers`", "classicmodels.customers") } }; // act client.Connect(connectRequest); var response = client.DiscoverSchemas(request); // assert Assert.IsType <DiscoverSchemasResponse>(response); Assert.Single(response.Schemas); var schema = response.Schemas[0]; Assert.Equal($"`classicmodels`.`customers`", schema.Id); Assert.Equal("classicmodels.customers", schema.Name); Assert.Equal($"", schema.Query); Assert.Equal(10, schema.Sample.Count); Assert.Equal(13, schema.Properties.Count); var property = schema.Properties[0]; Assert.Equal("`customerNumber`", property.Id); Assert.Equal("customerNumber", property.Name); Assert.Equal("", property.Description); Assert.Equal(PropertyType.Integer, property.Type); Assert.True(property.IsKey); Assert.False(property.IsNullable); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task DiscoverSchemasRefreshTest() { // setup var mockHttp = new MockHttpMessageHandler(); mockHttp.When("https://creator.zoho.com/api/json/applications?scope=creatorapi&authtoken=mocktoken") .Respond("application/json", "{\"result\":{\"application_list\":{\"applications\":[{\"application\":[{\"created_time\":\"2019-03-1305:29:27.0\",\"application_name\":\"EventManagement\",\"access\":\"private\",\"link_name\":\"event-management\",\"time_zone\":\"IST\",\"dateformat\":\"dd-MMM-yyyy\"}]}]},\"application_owner\":\"wyattroehler\"}}"); mockHttp.When("https://creator.zoho.com/api/json/event-management/formsandviews?scope=creatorapi&zc_ownername=wyattroehler&authtoken=mocktoken") .Respond("application/json", "{\"application-name\":[\"event-management\",{\"viewList\":[{\"viewCount\":8},{\"linkid\":71,\"componentid\":3836610000000031391,\"displayname\":\"BookEvents\",\"componentname\":\"Book_Events_Mobile\",\"formlinkname\":\"Create_New_Event\"},{\"linkid\":72,\"componentid\":3836610000000031569,\"displayname\":\"EventsCalendar\",\"componentname\":\"Events_Calendar\",\"formlinkname\":\"Create_New_Event\"},{\"linkid\":73,\"componentid\":3836610000000031573,\"displayname\":\"AllEventsList\",\"componentname\":\"All_Events_List\",\"formlinkname\":\"Create_New_Event\"},{\"linkid\":74,\"componentid\":3836610000000031577,\"displayname\":\"PaidEventBookings\",\"componentname\":\"Booked_Entries\",\"formlinkname\":\"Book_Paid_Events\"},{\"linkid\":75,\"componentid\":3836610000000031579,\"displayname\":\"FreeEventBookings\",\"componentname\":\"Booked_Free_Entries\",\"formlinkname\":\"Book_Free_Events1\"},{\"linkid\":76,\"componentid\":3836610000000031581,\"displayname\":\"AllVenues\",\"componentname\":\"All_Venues\",\"formlinkname\":\"Add_Venue\"},{\"linkid\":77,\"componentid\":3836610000000031583,\"displayname\":\"AllEventCategories\",\"componentname\":\"All_Event_Categories\",\"formlinkname\":\"Add_Event_Category\"},{\"linkid\":78,\"componentid\":3836610000000031585,\"displayname\":\"ViewAttendees\",\"componentname\":\"All_Customers\",\"formlinkname\":\"Add_Customer\"}],\"formList\":[{\"formCount\":1},{\"linkid\":49,\"displayname\":\"CreateNewEvent\",\"componentname\":\"Create_New_Event\"}]}]}"); mockHttp.When("https://creator.zoho.com/api/json/event-management/Create_New_Event/fields?scope=creatorapi&zc_ownername=wyattroehler&authtoken=mocktoken") .Respond("application/json", "{\"application-name\":[\"event-management\",{\"form-name\":[\"Create_New_Event\",{\"Fields\":[{\"Reqd\":true,\"Type\":100,\"Choices\":[{\"choice1\":\"3836610000000030013\"}],\"Tooltip\":\"\",\"DisplayName\":\"EventCategory\",\"Unique\":false,\"FieldName\":\"Event_Category\",\"apiType\":12},{\"Reqd\":true,\"Type\":1,\"Tooltip\":\"\",\"DisplayName\":\"EventName\",\"Unique\":false,\"MaxChar\":255,\"FieldName\":\"Event_Name\",\"Initial\":\"\",\"apiType\":1},{\"Reqd\":true,\"Type\":100,\"Choices\":[{\"choice1\":\"3836610000000030019\"}],\"Tooltip\":\"\",\"DisplayName\":\"Venue\",\"Unique\":false,\"FieldName\":\"Venue\",\"apiType\":12},{\"Reqd\":true,\"Type\":22,\"Tooltip\":\"\",\"DisplayName\":\"EventStartTime\",\"Unique\":false,\"FieldName\":\"Event_Start_Time\",\"Initial\":\"\",\"apiType\":11},{\"Reqd\":true,\"Type\":22,\"Tooltip\":\"\",\"DisplayName\":\"EventEndTime\",\"Unique\":false,\"FieldName\":\"Event_End_Time\",\"Initial\":\"\",\"apiType\":11},{\"Reqd\":false,\"Type\":31,\"Tooltip\":\"\",\"DisplayName\":\"EventID\",\"Unique\":false,\"FieldName\":\"Event_ID\",\"apiType\":9},{\"Reqd\":true,\"Type\":100,\"Choices\":[{\"choice1\":\"Free\",\"choice2\":\"Paid\"}],\"Tooltip\":\"\",\"DisplayName\":\"TicketType\",\"Unique\":false,\"FieldName\":\"Subscription_Type\",\"apiType\":12},{\"Reqd\":true,\"altTxtReq\":false,\"Type\":20,\"imgLinkReq\":false,\"imgTitleReq\":false,\"Tooltip\":\"\",\"DisplayName\":\"EventImage\",\"Unique\":false,\"FieldName\":\"Event_Image\",\"apiType\":18},{\"Reqd\":true,\"Type\":6,\"Tooltip\":\"\",\"DisplayName\":\"EntryFees\",\"Unique\":false,\"MaxChar\":10,\"FieldName\":\"Entry_Fees\",\"Initial\":\"0\",\"CurrencyType\":\"USD\",\"apiType\":8},{\"Reqd\":true,\"Type\":5,\"Tooltip\":\"\",\"DisplayName\":\"Numberofentries\",\"Unique\":false,\"MaxChar\":10,\"FieldName\":\"Number_of_entries\",\"Initial\":\"0\",\"apiType\":5},{\"Reqd\":false,\"Type\":5,\"Tooltip\":\"\",\"DisplayName\":\"AvailableEntries\",\"Unique\":false,\"MaxChar\":10,\"FieldName\":\"Available_Entries\",\"Initial\":\"0\",\"apiType\":5},{\"Reqd\":true,\"Type\":3,\"Tooltip\":\"\",\"DisplayName\":\"EventDescription\",\"Unique\":false,\"FieldName\":\"Remarks\",\"apiType\":2},{\"Reqd\":false,\"Type\":101,\"Choices\":[{\"choice1\":\"Active\",\"choice2\":\"Ended\"}],\"Tooltip\":\"\",\"DisplayName\":\"EventStatus\",\"Unique\":false,\"FieldName\":\"Event_Status\",\"apiType\":13}],\"DisplayName\":\"CreateNewEvent\"}]}]}"); Server server = new Server { Services = { Publisher.BindService(new PluginZohoCreator.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 DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, ToRefresh = { new Schema { Id = "2" } } }; // act client.Connect(connectRequest); var response = client.DiscoverSchemas(request); // assert Assert.IsType <DiscoverSchemasResponse>(response); Assert.Empty(response.Schemas); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task ReadStreamQueryTest() { // 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 discoverRequest = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, ToRefresh = { new Schema { Id = "Custom", Name = "Custom", Query = "SELECT id, name from Account" } } }; // act client.Connect(connectRequest); var discoverResponse = client.DiscoverSchemas(discoverRequest); var request = new ReadRequest() { Schema = discoverResponse.Schemas.First(), }; 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 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 DiscoverSchemasRefreshBadMockSchemaNameTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginMockaroo.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 DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, SampleSize = 10, ToRefresh = { GetTestSchema("id", "name", new MockSchema { Count = 10, Name = "bad" }) } }; // act client.Connect(connectRequest); try { var response = client.DiscoverSchemas(request); } catch (Exception e) { // assert Assert.IsType <RpcException>(e); Assert.Contains("Schema bad not found", e.Message); } // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task DiscoverSchemasRefreshQueryBadSyntaxTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginBigQuery.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 DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, SampleSize = 10, ToRefresh = { GetTestSchema("testdata.table1", "testdata.table1", $"bad syntax") } }; // act client.Connect(connectRequest); try { var response = client.DiscoverSchemas(request); } catch (Exception e) { // assert Assert.IsType <RpcException>(e); Regex rgx = new Regex("Job.*contained errors", RegexOptions.Compiled); bool passed = rgx.IsMatch(e.Message); Assert.True(passed); } // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task DiscoverSchemasRefreshQueryBadSyntaxTest() { // 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 DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, SampleSize = 10, ToRefresh = { GetTestSchema("test", "test", $"bad syntax") } }; // act client.Connect(connectRequest); try { var response = client.DiscoverSchemas(request); } catch (Exception e) { // assert Assert.IsType <RpcException>(e); Assert.Contains("You have an error in your SQL syntax", e.Message); } // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task DiscoverSchemasRefreshTest() { // 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 DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, ToRefresh = { new Schema { Id = "3", PublisherMetaJson = "{\"Module\":\"test module\"}" } } }; // act client.Connect(connectRequest); var response = client.DiscoverSchemas(request); // assert Assert.IsType <DiscoverSchemasResponse>(response); Assert.Single(response.Schemas); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task DiscoverSchemasRefreshTest() { // 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 DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, ToRefresh = { new Schema { Id = "Account" } } }; // act client.Connect(connectRequest); var response = client.DiscoverSchemas(request); // assert Assert.IsType <DiscoverSchemasResponse>(response); Assert.Single(response.Schemas); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task DiscoverSchemasRefreshTest() { // 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 request = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.Refresh, ToRefresh = { new Schema { Id = "Classes - Read" }, new Schema{ Id = "Contact Us" } } }; // act 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 ReadStreamRealTimeTest() { // 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(); 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 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 DiscoverSchemasAllTest() { // 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 connectRequest = GetConnectSettings(); var request = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.All, SampleSize = 10 }; // act client.Connect(connectRequest); var response = client.DiscoverSchemas(request); // assert Assert.IsType <DiscoverSchemasResponse>(response); // Assert.Equal(2, response.Schemas.Count); // // var schema = response.Schemas[0]; // Assert.Equal($"cclf1", schema.Id); // Assert.Equal("cclf1", schema.Name); // Assert.Equal($"", schema.Query); // Assert.Equal(10, schema.Sample.Count); // Assert.Equal(17, schema.Properties.Count); // // var property = schema.Properties[0]; // Assert.Equal("field1", property.Id); // Assert.Equal("field1", property.Name); // Assert.Equal("", property.Description); // Assert.Equal(PropertyType.String, property.Type); // Assert.False(property.IsKey); // Assert.True(property.IsNullable); // // var schema2 = response.Schemas[1]; // Assert.Equal($"Custom Name", schema2.Id); // Assert.Equal("Custom Name", schema2.Name); // Assert.Equal($"", schema2.Query); // Assert.Equal(10, schema2.Sample.Count); // Assert.Equal(17, schema2.Properties.Count); // // var property2 = schema2.Properties[0]; // Assert.Equal("field1", property2.Id); // Assert.Equal("field1", property2.Name); // Assert.Equal("", property2.Description); // Assert.Equal(PropertyType.String, property2.Type); // Assert.False(property2.IsKey); // Assert.True(property2.IsNullable); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task ReadStreamSubscriberTest() { // 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("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 ReadStreamTest() { // 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 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.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(1000, records.Count); var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson); Assert.Equal("46904477493454029959SPNUZMVK63614033839X", record["id"]); Assert.Equal("40", record["data1"]); Assert.Equal("2019-09-04", record["date1"]); Assert.Equal("2019-09-04", record["date2"]); Assert.Equal("1827C30681", record["data2"]); Assert.Equal(" 000000000000000293.44", record["data3"]); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task ReadStreamQuerySchemaTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginOracleNet.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 \"C##DEMO\".\"ACCOUNTARCHIVE\""); 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 <Naveego.Sdk.Plugins.Record>(); while (await responseStream.MoveNext()) { records.Add(responseStream.Current); } // assert Assert.Equal(5, records.Count); var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson); Assert.Equal("3", record["\"CHANNEL_ID\""]); Assert.Equal("Direct Sales", record["\"CHANNEL_DESC\""]); Assert.Equal("Direct", record["\"CHANNEL_CLASS\""]); Assert.Equal("12", record["\"CHANNEL_CLASS_ID\""]); Assert.Equal("Channel total", record["\"CHANNEL_TOTAL\""]); Assert.Equal("1", record["\"CHANNEL_TOTAL_ID\""]); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task ReadStreamQuerySchemaTest() { // 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 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 ReadStreamTableSchemaTest() { // 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 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 ReadStreamQuerySchemaTest() { // setup Server server = new Server { Services = { Publisher.BindService(new PluginBigQuery.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("`testdata`,`table1`", "testdata.table1", $"SELECT * FROM `testdata`.`table1`"); 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(10, records.Count); var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[9].DataJson); Assert.Equal("64", record["col1"]); // Assert.Equal("101", record["col2"]); // Assert.Equal("Kevin O'Leary", record["col3"]); // Assert.Equal("202", record["col4"]); // Assert.True(Boolean.Parse(record["col5"].ToString())); // Assert.Equal(DateTime.Parse("2003-01-06T00:00:00"), record["col6"]); // var record2 = JsonConvert.DeserializeObject<Dictionary<string, object>>(records[1].DataJson); // Assert.Equal(null, record2["col1"]); // Assert.Equal("-4.8", record2["col2"]); // Assert.Equal("back\\this", record2["col3"]); // Assert.Equal(null, record2["col4"]); // Assert.False(Boolean.Parse(record2["col5"].ToString())); // Assert.Equal(DateTime.Parse("1001-01-01T00:00:00"), record2["col6"]); // // var record3 = JsonConvert.DeserializeObject<Dictionary<string, object>>(records[2].DataJson); // Assert.Equal(null, record3["col1"]); // Assert.Equal("-4.8", record3["col2"]); // Assert.Equal("apostrophe'''THAT'", record3["col3"]); // Assert.Equal(null, record3["col4"]); // Assert.False(Boolean.Parse(record3["col5"].ToString())); // Assert.Equal(DateTime.Parse("1001-01-01T00:00:00"), record3["col6"]); // // var record4 = JsonConvert.DeserializeObject<Dictionary<string, object>>(records[4].DataJson); // Assert.Equal("3", record4["col1"]); // Assert.Equal("-4.8", record4["col2"]); // Assert.Equal("tricky\\\''this", record4["col3"]); // Assert.Equal(null, record4["col4"]); // Assert.False(Boolean.Parse(record4["col5"].ToString())); // Assert.Equal(DateTime.Parse("0001-01-01T00:00:00"), record4["col6"]); // // var record5 = JsonConvert.DeserializeObject<Dictionary<string, object>>(records[3].DataJson); // Assert.Equal("1", record5["col1"]); // Assert.Equal("2.2", record5["col2"]); // Assert.Equal("", record5["col3"]); // Assert.Equal(null, record5["col4"]); // Assert.False(Boolean.Parse(record5["col5"].ToString())); // Assert.Equal(DateTime.Parse("1970-01-01T00:00:00"), record5["col6"]); // var record6 = JsonConvert.DeserializeObject<Dictionary<string, object>>(records[5].DataJson); // var record7 = JsonConvert.DeserializeObject<Dictionary<string, object>>(records[6].DataJson); // var record8 = JsonConvert.DeserializeObject<Dictionary<string, object>>(records[7].DataJson); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }
public async Task ReadStreamQuerySchemaTest() { // 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 schema = GetTestSchema("test", "test", $"SELECT * FROM \"public\".\"actor\""); 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(200, records.Count); var record = JsonConvert.DeserializeObject <Dictionary <string, object> >(records[0].DataJson); Assert.Equal((long)1, record["\"actor_id\""]); Assert.Equal("PENELOPE", record["\"first_name\""]); Assert.Equal("GUINESS", record["\"last_name\""]); Assert.Equal(DateTime.Parse("2/15/2017 4:34:33 AM"), record["\"last_update\""]); // 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 discoverAllRequest = new DiscoverSchemasRequest { Mode = DiscoverSchemasRequest.Types.Mode.All, }; var settings = GetSettings(); var schema = GetTestSchema($"SELECT * FROM [{Constants.SchemaName}].[ReadDirectory_VEH_POL]"); schema.PublisherMetaJson = JsonConvert.SerializeObject(new SchemaPublisherMetaJson { RootPath = settings.RootPaths.First() }); var request = new ReadRequest() { Schema = schema, Limit = 10, DataVersions = new DataVersions { JobId = "test" }, JobId = "test", }; // act client.Connect(connectRequest); client.DiscoverSchemas(discoverAllRequest); 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(10, records.Count); // cleanup await channel.ShutdownAsync(); await server.ShutdownAsync(); }