Kinetica   C#   API  Version 7.2.3.1
TableManagementTests.cs
Go to the documentation of this file.
1 using System;
2 using System.Collections.Generic;
3 using Xunit;
4 using Kinetica.Tests.Common;
5 using kinetica;
6 
8 {
13  [Trait("Category", "Integration")]
14  public class TableManagementTests
15  {
16  [Fact]
17  public void TestCreateTableBasic()
18  {
19  using var ctx = new TestContext("table_basic");
20 
21  var typeDef = @"{""type"":""record"",""name"":""test"",""fields"":[{""name"":""id"",""type"":""int""}]}";
22  var typeResp = ctx.Kinetica.createType(typeDef, "test_type", new Dictionary<string, IList<string>>(), new Dictionary<string, string>());
23 
24  var tableName = ctx.QualifiedTable("test_table");
25  var resp = ctx.Kinetica.createTable(tableName, typeResp.type_id, new Dictionary<string, string>());
26 
27  Assert.Equal(tableName, resp.table_name);
28  Assert.Equal(typeResp.type_id, resp.type_id);
29  }
30 
31  [Fact]
33  {
34  using var ctx = new TestContext("table_opts");
35 
36  var typeDef = @"{""type"":""record"",""name"":""opts"",""fields"":[{""name"":""id"",""type"":""int""}]}";
37  var typeResp = ctx.Kinetica.createType(typeDef, "opts_type", new Dictionary<string, IList<string>>(), new Dictionary<string, string>());
38 
39  var tableName = ctx.QualifiedTable("opts_table");
40  var options = new Dictionary<string, string>
41  {
42  { "is_replicated", "true" }
43  };
44 
45  var resp = ctx.Kinetica.createTable(tableName, typeResp.type_id, options);
46 
47  Assert.Equal(tableName, resp.table_name);
48  }
49 
50  [Fact]
51  public void TestHasTableExists()
52  {
53  using var ctx = new TestContext("has_table_y");
54 
55  var typeDef = @"{""type"":""record"",""name"":""exists"",""fields"":[{""name"":""id"",""type"":""int""}]}";
56  var typeResp = ctx.Kinetica.createType(typeDef, "exists_type", new Dictionary<string, IList<string>>(), new Dictionary<string, string>());
57 
58  var tableName = ctx.QualifiedTable("exists_table");
59  ctx.Kinetica.createTable(tableName, typeResp.type_id, new Dictionary<string, string>());
60 
61  var hasResp = ctx.Kinetica.hasTable(tableName, new Dictionary<string, string>());
62 
63  Assert.True(hasResp.table_exists);
64  Assert.Equal(tableName, hasResp.table_name);
65  }
66 
67  [Fact]
68  public void TestHasTableNotExists()
69  {
70  using var ctx = new TestContext("has_table_n");
71 
72  var tableName = ctx.QualifiedTable("nonexistent");
73  var hasResp = ctx.Kinetica.hasTable(tableName, new Dictionary<string, string>());
74 
75  Assert.False(hasResp.table_exists);
76  }
77 
78  [Fact]
79  public void TestClearTable()
80  {
81  using var ctx = new TestContext("clear_table");
82 
83  // Create table using SQL (simpler approach)
84  var tableName = ctx.QualifiedTable("clear_table");
85  ctx.Kinetica.executeSql($"CREATE TABLE {tableName} (id INT NOT NULL, PRIMARY KEY (id))");
86 
87  // Insert records using SQL
88  ctx.Kinetica.executeSql($"INSERT INTO {tableName} (id) VALUES (1)");
89  ctx.Kinetica.executeSql($"INSERT INTO {tableName} (id) VALUES (2)");
90  ctx.Kinetica.executeSql($"INSERT INTO {tableName} (id) VALUES (3)");
91 
92  // Verify records exist
93  var getBefore = ctx.Kinetica.executeSql($"SELECT * FROM {tableName}", 0, -9999);
94  Assert.Equal(3, getBefore.total_number_of_records);
95 
96  // Clear table
97  var clearResp = ctx.Kinetica.clearTable(tableName, null, new Dictionary<string, string>());
98  Assert.Equal(tableName, clearResp.table_name);
99 
100  // Table should not exist after clear
101  var hasAfter = ctx.Kinetica.hasTable(tableName, new Dictionary<string, string>());
102  Assert.False(hasAfter.table_exists);
103  }
104 
105  [Fact]
107  {
108  using var ctx = new TestContext("multi_tables");
109 
110  var typeDef = @"{""type"":""record"",""name"":""shared"",""fields"":[{""name"":""id"",""type"":""int""}]}";
111  var typeResp = ctx.Kinetica.createType(typeDef, "shared_type", new Dictionary<string, IList<string>>(), new Dictionary<string, string>());
112 
113  // Create multiple tables with same type
114  var table1 = ctx.QualifiedTable("table1");
115  var table2 = ctx.QualifiedTable("table2");
116  var table3 = ctx.QualifiedTable("table3");
117 
118  ctx.Kinetica.createTable(table1, typeResp.type_id, new Dictionary<string, string>());
119  ctx.Kinetica.createTable(table2, typeResp.type_id, new Dictionary<string, string>());
120  ctx.Kinetica.createTable(table3, typeResp.type_id, new Dictionary<string, string>());
121 
122  // Verify all exist
123  foreach (var table in new[] { table1, table2, table3 })
124  {
125  var hasResp = ctx.Kinetica.hasTable(table, new Dictionary<string, string>());
126  Assert.True(hasResp.table_exists);
127  }
128  }
129  }
130 }
Test context that manages schema and cleanup for integration tests.
Definition: TestContext.cs:11