Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce C# driver without deployment #609

Merged
merged 148 commits into from
Mar 22, 2024
Merged
Changes from 1 commit
Commits
Show all changes
148 commits
Select commit Hold shift + click to select a range
2bee364
Add hello world with working Bazel-Dotnet setup
farost Jan 17, 2024
4bd4cfe
Divide lib and binary for the Hello World version
farost Jan 17, 2024
35997ca
Rename classes for the Csharp standards
farost Jan 17, 2024
3c5dce7
Add a proof of concept of using C# with bazel and BDD test framework
farost Jan 19, 2024
9568747
Refactor BDD tests directories and add integration test examples
farost Jan 22, 2024
02ca559
Add a proof of concept for bazel build for swig + c# app
farost Jan 24, 2024
4db8a96
Add test csharp binary for testing the native dependencies
farost Jan 26, 2024
ce1cd50
Add howto to the .sh nuget dependencies script
farost Jan 29, 2024
f76ba9d
Start C# implementation, add base connectivity interfaces and impleme…
farost Jan 29, 2024
4ee0168
Start writing behaviour connection tests
farost Jan 30, 2024
b486fca
Test BUILD
farost Jan 30, 2024
a5b1bdc
Generalize behaviour tests runner usage
farost Jan 30, 2024
593c50b
Adapt BDD for external feature deps
farost Jan 30, 2024
e90114e
Remove excessive logic for remote deps
farost Jan 30, 2024
0af07ea
Start writing behaviour database test
farost Jan 30, 2024
0fe4318
Complete test methods' layout for the first BDD test
farost Jan 30, 2024
3b2859a
Add structured BDD framework for connection tests. Fix compilation fo…
farost Jan 30, 2024
4555284
Add assert to the behaviour test build
farost Jan 31, 2024
af58e11
Refactor bazel files and complete behaviour tests' restructure for da…
farost Jan 31, 2024
7fd1769
Connect API with the implementation, fix build. Add Enumerators for n…
farost Feb 1, 2024
5309a3d
Add integration tests for creating and deleting database, connection
farost Feb 1, 2024
c977f3c
Add most of the core steps for database connection
farost Feb 1, 2024
94a6d72
Fix parallel steps for database connection tests
farost Feb 1, 2024
cbf0a49
Get rid off nullable and XML warnings
farost Feb 2, 2024
f0d6239
Fix codestyle
farost Feb 2, 2024
b261709
Add ValueType pointer to SWIG
farost Feb 2, 2024
20c4960
Add a strange version of char**, fixed Cloud tests (now they run and …
farost Feb 2, 2024
f65eff5
Add the first version of exceptions (bad one)
farost Feb 6, 2024
e1d9d8f
Implement Exceptions, needs refactoring + cleaning + BDD test
farost Feb 6, 2024
d084f6c
Refactor exceptions and add steps for database connection bdd tests b…
farost Feb 6, 2024
40face2
Refactor behaviour tests for steps reusage. Start session steps imple…
farost Feb 6, 2024
0da1654
Add ErrorMessages, fixed dots for several drivers. WIP
farost Feb 6, 2024
2ef6a47
Add missing dots to the python driver messages
farost Feb 6, 2024
f9577fc
Refactor error messages for the build
farost Feb 7, 2024
fa8e1f4
Add ErrorMessage TODO
farost Feb 7, 2024
fe1e640
Refactor SessionType and TransactionType. Revive throws based on the …
farost Feb 7, 2024
97a4742
Add (wip) test steps for transaction, session, query and everything c…
farost Feb 7, 2024
9171c0d
Add formatting for error messages from exceptions. Fix bdd tests build
farost Feb 7, 2024
1dfcea0
Clean old TODOs. Add new TODOs
farost Feb 7, 2024
52b4ae7
Refactor based on PR comments: refactor Session and Transaction types…
farost Feb 8, 2024
89035bc
Remove excessive lock file
farost Feb 8, 2024
16b9615
Refactor behaviour tests to have less copypaste
farost Feb 8, 2024
93ce1e1
Rename ConnectionFixture -> ConnectionStepsBase back as it is about s…
farost Feb 8, 2024
3c0ed46
Refactor namespaces and properties after review
farost Feb 8, 2024
f440858
Complete 5/7 session steps. Refactor for properties
farost Feb 9, 2024
eb9e0a7
Add additional structures to bdd tests. Fix cloud bdd tests for session
farost Feb 9, 2024
9e0a6ae
Add a number of concept, logic and query API classes. Refactor old code
farost Feb 9, 2024
d7448c2
Add more structures for API and common. Not buildable, wip
farost Feb 9, 2024
b30158c
Fix comment in the java driver
farost Feb 9, 2024
837c3e6
Add Promises. Fix build with the new API classes
farost Feb 12, 2024
e441950
Add QueryManager. Refactor small issues
farost Feb 12, 2024
4e88c59
Add Concept/Answer implementation, not buildable yet
farost Feb 12, 2024
af08eac
Fix build for util
farost Feb 13, 2024
86733bf
Add all the missing implementations for types
farost Feb 13, 2024
9ecd32e
Fix build issues, mostly with dependencies. WIP
farost Feb 14, 2024
731a4b4
Start fixing common's build
farost Feb 26, 2024
16f4e87
Simplify namespaces. Fix Promises build. Fix methods overrides.
farost Feb 27, 2024
4217598
Fix VoidPromises build + small api things
farost Feb 27, 2024
aca942e
Change ICollections -> IEnumerable / ISet / IList
farost Feb 28, 2024
6e223be
Add arrays for custom types. Fix some build
farost Feb 28, 2024
02f0172
Fix concept build, leave some todos
farost Feb 29, 2024
fc2b2b9
Fix build for the whole driver, more fixes and refactoring to come
farost Feb 29, 2024
e85a9db
Fix IDisposables. Refactor Maps
farost Feb 29, 2024
705442d
Refactor packages names, util structure and some TODOs
farost Feb 29, 2024
3bf7e38
Add Json dependency and test usage. Fix XML comments warnings
farost Feb 29, 2024
513b81f
Refactor errors and some checks. Fix old tests
farost Feb 29, 2024
644718f
Implement basic query steps for bdd, wip for it to work
farost Feb 29, 2024
176f7eb
Finish Session bdd tests, push steps for transaction
farost Mar 1, 2024
fdbf364
Finish transaction tests
farost Mar 1, 2024
28cef0d
Add User tests steps
farost Mar 1, 2024
e3a0677
Finish User tests
farost Mar 4, 2024
fc88c7a
Add implementations for Query Steps. WIP, but some tests already work
farost Mar 4, 2024
b58b9ce
Fix incorrect inheritance
farost Mar 5, 2024
17c156f
Try to fix arrays (wip), progress for bdd tests
farost Mar 5, 2024
412e351
Add memory management for the unmanaged arrays
farost Mar 6, 2024
484dbde
Cleanup and todos
farost Mar 6, 2024
0e98405
Collect resources after all the IEnumerable steps
farost Mar 6, 2024
4a72aef
Fix old integration test
farost Mar 6, 2024
9f1e83e
Add Memory test (without actual checks) to check how arrays are marsh…
farost Mar 6, 2024
5b744a4
Add memory integration tests. Fix ValueType* memory management
farost Mar 6, 2024
84e59d4
Finish driver query test
farost Mar 6, 2024
575d826
Add tests for query/language
farost Mar 6, 2024
9ac94be
Fix query tests: json comparison and one step logic
farost Mar 7, 2024
9908402
Remove mockito from the deps
farost Mar 7, 2024
5d4b24d
Fix match and insert tests
farost Mar 7, 2024
cbcdeb6
Fix precision for double, fix match tests
farost Mar 8, 2024
f12511e
Add base for Concept behaviour tests. WIP, not buildable
farost Mar 8, 2024
5644345
Rename methods, asserts
farost Mar 8, 2024
cbe2034
Fix methods calls for tests, wip
farost Mar 8, 2024
13f634e
Change SingleTransaction -> Tx
farost Mar 8, 2024
3a7121b
Refactor Transitivity usage, fix tests
farost Mar 8, 2024
79a2bd7
Test refactoring and codestyling
farost Mar 8, 2024
3d7cf9b
Fix build for Concept tests, WIP
farost Mar 11, 2024
7a44a7b
Refactor small api things. Fix concept test build
farost Mar 11, 2024
2c57c58
Start fixing patterns for concept tests
farost Mar 11, 2024
8b3672c
Update Xunit.Gherkin.Quick dependency to run scenario outlines with D…
farost Mar 12, 2024
a9e3aa4
Fix a number of patterns for steps, wip
farost Mar 12, 2024
263cdb5
Finish Relation test
farost Mar 12, 2024
f44c448
Finish Thing tests
farost Mar 12, 2024
7722a05
Fix regex for concept tests, most of them pass
farost Mar 13, 2024
589cf11
Finish main concept tests. Add query/rule-validation test
farost Mar 13, 2024
822e2f7
Clean TODOs, refactor, small fixes
farost Mar 13, 2024
4fd1848
Fix transaction tests
farost Mar 13, 2024
2f4eb60
Change namespace to TypeDB.Xxxx... Refactoring + todo cleaning
farost Mar 13, 2024
4136f37
Add reasoner bdd tests. WIP
farost Mar 13, 2024
ea2ea23
Finish reasoner test (with some empty steps)
farost Mar 13, 2024
7901f0b
Refactor + clean todos
farost Mar 14, 2024
cd91e61
Add RuleValidation test to Java
farost Mar 14, 2024
7ecb8ee
Clean behaviour tests build from warnings! Start fixing User bdd...
farost Mar 14, 2024
0d9f7a7
Fix User steps
farost Mar 14, 2024
456554f
Clean todos and refactor a bit
farost Mar 14, 2024
faf80f8
Update deps. Fix old bdd tests. Progress datetime work
farost Mar 15, 2024
9b2187e
Finish datetime saga
farost Mar 15, 2024
60bb2b2
Cleanup for for swig file
farost Mar 15, 2024
61d4b6c
Refactor Transitivity
farost Mar 15, 2024
eecbd79
Refactoring get -> readonly
farost Mar 15, 2024
3cf6980
Rename native lib
farost Mar 15, 2024
9586fe4
Refactor common things
farost Mar 15, 2024
7089b1e
Fix ErrorMessage
farost Mar 18, 2024
1e8328a
Add throw for wrong state of an IValue, fix docs
farost Mar 18, 2024
0f86369
Make some impls' constructors internal, remove excessive Resolver
farost Mar 18, 2024
55241fe
Refactor TypeDBDriverException's methods
farost Mar 18, 2024
7e44328
Remove excessive usings
farost Mar 18, 2024
3d680dd
Fix dependency ref and comment out excessive .factory builds
farost Mar 18, 2024
0f2bf38
Add new java bdd test to automation
farost Mar 18, 2024
2c33af2
Add TODO
farost Mar 18, 2024
0a5f471
Add csharp tests to automation. Update maven artifacts
farost Mar 19, 2024
51b6bdd
Update maven deps
farost Mar 19, 2024
cd91f3c
Disable python temporarily for build
farost Mar 19, 2024
b4ddb7b
Exclude python from build (temporarily)
farost Mar 19, 2024
555ce59
Try to fix python ignoring
farost Mar 19, 2024
fab4cba
Fix dependencies
farost Mar 19, 2024
0042590
Disable cpp for space
farost Mar 19, 2024
fbe134b
Make enum-like classes actual enums (ValueType WIP)
farost Mar 19, 2024
410c819
Fix enums and return main build
farost Mar 19, 2024
48dde68
Fix checkstyle for nuget package
farost Mar 19, 2024
1151b08
Add docs for ValueType methods. Fix nuget package build
farost Mar 19, 2024
c95f21f
Fix checkstyle comments
farost Mar 19, 2024
7d9f68d
Squeeze .factory steps declarations. Fix TestRunner float fails
farost Mar 20, 2024
933531b
Fix docs for java and python
farost Mar 20, 2024
0be1953
Refactor Properties <-> Methods. Fix some documentation
farost Mar 20, 2024
ac7577f
Fix no empty line in the end
farost Mar 20, 2024
513a47e
Change Concepts -> GetConcepts
farost Mar 21, 2024
2af3628
Fix linux memory marshalling
farost Mar 21, 2024
08a6275
Refactor error messages codes. Update deps
farost Mar 21, 2024
0af6bb7
Fix automation conflict bugs
farost Mar 21, 2024
c9aeaa9
Fix .factory
farost Mar 21, 2024
02f2d0e
Refactor error codes. Refactor memory management
farost Mar 22, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 34 additions & 10 deletions c/swig/typedb_driver_csharp.swg
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A stinky thing about building C# driver: it prints a lot of warnings about nullability usages within the SWIG-generated classes! So it's not even my fault. I tried to activate the nullable context, but it doesn't work everywhere, so the warnings still appear.
I'm not sure how we regularly consider warnings of different levels, but I thought you had to know about it now.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, thanks for the note of it!

Original file line number Diff line number Diff line change
Expand Up @@ -618,17 +618,41 @@

%typemap(ctype) char ** "char**"
%typemap(cstype) char ** "string[]"
%typemap(imtype) char ** "global::System.IntPtr"

%typemap(
imtype,
inattributes = "[
global::System.Runtime.InteropServices.In,
global::System.Runtime.InteropServices.Out,
global::System.Runtime.InteropServices.MarshalAs(
global::System.Runtime.InteropServices.UnmanagedType.LPArray,
ArraySubType=global::System.Runtime.InteropServices.UnmanagedType.LPStr)]"
) char ** "string[]"

%typemap(csin) char ** "$csinput"
csin,
pre="
int arraySize = $csinput.Length;
global::System.IntPtr unmanaged$csinput = System.Runtime.InteropServices.Marshal.AllocHGlobal(
(arraySize + 1) * System.Runtime.InteropServices.Marshal.SizeOf<global::System.IntPtr>());

unsafe
{
global::System.IntPtr* arrayPtr = (global::System.IntPtr*)unmanaged$csinput.ToPointer();

int i = 0;
for (; i < arraySize; i++)
{
arrayPtr[i] = global::System.Runtime.InteropServices.Marshal.StringToCoTaskMemAnsi($csinput[i]);
}

arrayPtr[i] = global::System.IntPtr.Zero;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should really just be arrayPtr[arraySize] so it's both explicit and we don't have to depend on the for-loop side effects.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

}",
post="
unsafe
{
global::System.IntPtr* arrayPtr = (global::System.IntPtr*)unmanaged$csinput.ToPointer();

for (int i = 0; i < arraySize; i++)
{
global::System.Runtime.InteropServices.Marshal.FreeHGlobal(arrayPtr[i]);
}
}

global::System.Runtime.InteropServices.Marshal.FreeHGlobal(unmanaged$csinput);"
) char ** "unmanaged$csinput"

%typemap(csout) char **
{
return $imcall;
Expand Down