Had been trying to find a good torture test for the the Lionrock gRPC facade for FoundationDB and decided to go down the path of building a gRPC Record Layer client: https://mvnrepository.com/artifact/io.github.panghy.lionrock/lionrock-fdb-record-layer-client (it currently depends on a snapshot build of the record layer from my PR)
- Needed to refactor RL to support non-native FoundationDB Java Client - Refactor FDBDatabase and FDBDatabaseFactory by panghy · Pull Request #1344 · FoundationDB/fdb-record-layer · GitHub (currently open) in the record-layer
- On my private branch, swapped the real FDBDatabaseFactory to the gRPC version - Hard-wire to test the record-layer with a locallly running lionrock s… · panghy/fdb-record-layer@ccc6d16 · GitHub
- Ran the test, fix some bugs, repeat =p
- Only the following tests would fail (expectedly):
- FDBDatabaseImplTest.performNoOpAgainstFakeCluster()
- FDBRecordContextTest.timeoutTalkingToFakeCluster()
Apart from the odd transaction_too_old exceptions from a couple of large tests (they are flaky due to the database responding slower than the real thing), all of the tests passes!
Some flaky ones include:
- TextIndexTest.[4]Index{‘Simple$text_suffixes’, text}#4
- OnlineIndexerBuildRankIndexTest$Unsafe.addWhileBuildingParallelRank
With that, one can connect the RL library to an FDB cluster over gRPC without native binaries. The tests passes normally in about 6-7 minutes but takes about 14-15 minutes via gRPC. That’s mostly from the fact that there is no client-side caching (RYW or otherwise) and every get/getRange call needs to hit the network.