Node.js CountsAndLists SDK implementation and conformance tests
Arbitrary Counters and Lists for GameServers, SDKs and Allocation #2716 has been released in Alpha, and is looking for a contributor with Node.js experience to implement the Node.js SDK. The SDK methods to implement are listed in #2716, and have been implemented in Go https://github.com/googleforgames/agones/blob/main/sdks/go/alpha.go:
- func (a *Alpha) GetCounterCount(key string) (int64, error)
- func (a *Alpha) IncrementCounter(key string, amount int64) (error)
- func (a *Alpha) DecrementCounter(key string, amount int64) (error)
- func (a *Alpha) SetCounterCount(key string, amount int64) (error)
- func (a *Alpha) GetCounterCapacity(key string) (int64, error)
- func (a *Alpha) SetCounterCapacity(key string, amount int64) (error)
- func (a *Alpha) GetListCapacity(key string) (int64, error)
- func (a *Alpha) SetListCapacity(key string, amount int64) (error)
- func (a *Alpha) ListContains(key, value string) (bool, error)
- func (a *Alpha) GetListLength(key string) (int, error)
- func (a *Alpha) GetListValues(key string) ([]string, error)
- func (a *Alpha) AppendListValue(key, value string) (error)
- func (a *Alpha) DeleteListValue(key, value string) (error)
The Node.js SDK should be implemented in the https://github.com/googleforgames/agones/tree/main/sdks/nodejs directory, and should also contain unit tests. Navigating to agones/build and running make sdk-shell-node may be helpful when running unit tests.
The protocol buffer definitions for these SDK methods are in https://github.com/googleforgames/agones/tree/main/sdks/nodejs/lib/alpha. Note that the proto methods do not exactly match the above listed SDK methods. This is due to the difference between the design in #2716 and the Google AIP https://google.aip.dev/general guidance that the proto follows as closely as possible.
Conformance tests should be implemented in the https://github.com/googleforgames/agones/tree/main/test/sdk/nodejs directory. Note that the conformance tests use the Local SDK Server. Node.js conformance tests can be run by navigating to agones/build and running make run-sdk-conformance-test-node. The conformance test https://github.com/googleforgames/agones/blob/main/build/includes/sdk.mk will need to be updated to take in the ALPHA_FEATURE_GATES, and the COUNTS_AND_LISTS_TESTS.
@steven-supersolid if you or someone on your team has the time
I'm happy to take this on
I've done counters + unit tests and will next move on to lists, the nodejs example server, conformance tests