Skip to content

Commit

Permalink
clients: drop validation code
Browse files Browse the repository at this point in the history
The "walkthorough" sample is now validated together with all the other
samples.
  • Loading branch information
matklad committed Jan 12, 2024
1 parent 87bf24e commit 80a7440
Show file tree
Hide file tree
Showing 6 changed files with 0 additions and 1,109 deletions.
98 changes: 0 additions & 98 deletions src/clients/docs_generate.zig
Original file line number Diff line number Diff line change
Expand Up @@ -316,76 +316,6 @@ const Generator = struct {
) catch unreachable;
}

fn validate_minimal(self: Generator, keep_tmp: bool) !void {
// Test the sample file
self.print("Building minimal sample file");
var tmp_dir = try TmpDir.init(self.arena);
defer if (!keep_tmp) tmp_dir.deinit();

try self.build_file_within_project(tmp_dir, self.language.install_sample_file, true);
}

fn validate_aggregate(self: Generator, keep_tmp: bool) !void {
// Test major parts of sample code
var sample = try self.make_aggregate_sample();
self.print("Aggregate");
var line_no: u32 = 0;
var lines = std.mem.split(u8, sample, "\n");
while (lines.next()) |line| {
line_no += 1;
std.debug.print("{: >3} {s}\n", .{ line_no, line });
}
self.print("Building aggregate sample file");
var tmp_dir = try TmpDir.init(self.arena);
defer if (!keep_tmp) tmp_dir.deinit();

try self.build_file_within_project(tmp_dir, sample, false);
}

const tests = [_]struct {
name: []const u8,
validate: *const fn (Generator, bool) anyerror!void,
}{
.{
.name = "minimal",
.validate = validate_minimal,
},
.{
.name = "aggregate",
.validate = validate_aggregate,
},
};

// This will not include every snippet but it includes as much as //
// reasonable. Both so we can type-check as much as possible and also so
// we can produce a building sample file for READMEs.
fn make_aggregate_sample(self: Generator) ![]const u8 {
var parts = [_][]const u8{
self.language.test_main_prefix,
self.language.client_object_example,
self.language.create_accounts_example,
self.language.account_flags_example,
self.language.create_accounts_errors_example,
self.language.lookup_accounts_example,
self.language.create_transfers_example,
self.language.create_transfers_errors_example,
self.language.lookup_transfers_example,
self.language.get_account_transfers_example,
self.language.no_batch_example,
self.language.batch_example,
self.language.transfer_flags_link_example,
self.language.transfer_flags_post_example,
self.language.transfer_flags_void_example,
self.language.linked_events_example,
self.language.test_main_suffix,
};
var aggregate = std.ArrayList(u8).init(self.arena.allocator());
for (parts) |part| {
try aggregate.writer().print("{s}\n", .{part});
}
return aggregate.items;
}

fn generate_language_setup_steps(
self: Generator,
mw: *MarkdownWriter,
Expand Down Expand Up @@ -881,8 +811,6 @@ const Generator = struct {

const CliArgs = struct {
language: ?[]const u8 = null,
validate: ?[]const u8 = null,
no_validate: bool = false,
no_generate: bool = false,
keep_tmp: bool = false,
};
Expand All @@ -900,10 +828,6 @@ pub fn main() !void {

const cli_args = flags.parse(&args, CliArgs);

if (cli_args.validate != null and cli_args.no_validate) {
flags.fatal("--validate: conflicts with --no-validate", .{});
}

if (cli_args.language) |filter| {
skip_language = .{true} ** languages.len;

Expand Down Expand Up @@ -931,28 +855,6 @@ pub fn main() !void {
var mw = MarkdownWriter.init(&buf);

var generator = try Generator.init(&arena, language);
if (!cli_args.no_validate) {
generator.print("Validating");

for (Generator.tests) |t| {
if (cli_args.validate) |validate_only| {
var parts = std.mem.split(u8, validate_only, ",");

const found = while (parts.next()) |name| {
if (std.mem.eql(u8, name, t.name)) break true;
} else false;

if (!found) {
generator.printf("Skipping test [{s}]", .{t.name});
continue;
}
}

const root = try git_root(&arena);
try std.os.chdir(root);
try t.validate(generator, cli_args.keep_tmp);
}
}

if (!cli_args.no_generate) {
generator.print("Generating main README");
Expand Down
19 changes: 0 additions & 19 deletions src/clients/docs_types.zig
Original file line number Diff line number Diff line change
Expand Up @@ -78,41 +78,22 @@ pub const Docs = struct {
// Path to the file with code inside walkthrough sample.
walkthrough: []const u8,

client_object_example: Code,
client_object_documentation: Markdown,

create_accounts_example: Code,
create_accounts_documentation: Markdown,

create_accounts_errors_example: Code,
create_accounts_errors_documentation: Markdown,

account_flags_example: Code,
account_flags_documentation: Markdown,

lookup_accounts_example: Code,

create_transfers_example: Code,
create_transfers_documentation: Markdown,

create_transfers_errors_example: Code,
create_transfers_errors_documentation: Markdown,

// Good example of using batches to create transfers.
batch_example: Code,
// Bad example of not using batches well to create transfers.
no_batch_example: Code,

transfer_flags_documentation: Markdown,
transfer_flags_link_example: Code,
transfer_flags_post_example: Code,
transfer_flags_void_example: Code,

lookup_transfers_example: Code,

get_account_transfers_example: Code,

linked_events_example: Code,

developer_setup_documentation: Markdown,

Expand Down
172 changes: 0 additions & 172 deletions src/clients/dotnet/docs.zig
Original file line number Diff line number Diff line change
Expand Up @@ -200,38 +200,12 @@ pub const DotnetDocs = Docs{

.walkthrough = "Program.cs",

.client_object_example =
\\var tbAddress = Environment.GetEnvironmentVariable("TB_ADDRESS");
\\var client = new Client(
\\ clusterID: UInt128.Zero,
\\ addresses: new[] {tbAddress != null ? tbAddress : "3000"}
\\);
,

.client_object_documentation =
\\The `Client` class is thread-safe and for better performance, a
\\single instance should be shared between multiple concurrent
\\tasks. Multiple clients can be instantiated in case of connecting
\\to more than one TigerBeetle cluster.
,

.create_accounts_example =
\\var accounts = new[] {
\\ new Account
\\ {
\\ Id = 137,
\\ UserData128 = Guid.NewGuid().ToUInt128(),
\\ UserData64 = 1000,
\\ UserData32 = 100,
\\ Ledger = 1,
\\ Code = 718,
\\ Flags = AccountFlags.None,
\\ },
\\};
\\
\\var createAccountsError = client.CreateAccounts(accounts);
,

.create_accounts_documentation =
\\The `UInt128` fields like `ID`, `UserData128`, `Amount` and
\\account balances have a few extension methods to make it easier
Expand All @@ -251,84 +225,12 @@ pub const DotnetDocs = Docs{
\\* `AccountFlags.CreditsMustNotExceedDebits`
,

.account_flags_example =
\\var account0 = new Account{ /* ... account values ... */ };
\\var account1 = new Account{ /* ... account values ... */ };
\\account0.Flags = AccountFlags.Linked;
\\
\\createAccountsError = client.CreateAccounts(new []{account0, account1});
,

.create_accounts_errors_example =
\\var account2 = new Account{ /* ... account values ... */ };
\\var account3 = new Account{ /* ... account values ... */ };
\\var account4 = new Account{ /* ... account values ... */ };
\\
\\createAccountsError = client.CreateAccounts(new []{account2, account3, account4});
\\foreach (var error in createAccountsError) {
\\ Console.WriteLine("Error creating account {0}: {1}", error.Index, error.Result);
\\ return;
\\}
,

.create_accounts_errors_documentation = "",

.lookup_accounts_example =
\\accounts = client.LookupAccounts(new UInt128[] { 137, 138 });
,

.create_transfers_example =
\\var transfers = new[] {
\\ new Transfer
\\ {
\\ Id = 1,
\\ DebitAccountId = 1,
\\ CreditAccountId = 2,
\\ Amount = 10,
\\ UserData128 = 2000,
\\ UserData64 = 200,
\\ UserData32 = 2,
\\ Timeout = 0,
\\ Ledger = 1,
\\ Code = 1,
\\ Flags = TransferFlags.None,
\\ }
\\};
\\
\\var createTransfersError = client.CreateTransfers(transfers);
,

.create_transfers_documentation = "",

.create_transfers_errors_example =
\\foreach (var error in createTransfersError) {
\\ Console.WriteLine("Error creating account {0}: {1}", error.Index, error.Result);
\\ return;
\\}
,

.create_transfers_errors_documentation = "",

.no_batch_example =
\\foreach(var t in transfers) {
\\ createTransfersError = client.CreateTransfers(new []{t});
\\ // error handling omitted
\\}
,

.batch_example =
\\var BATCH_SIZE = 8190;
\\for (int i = 0; i < transfers.Length; i += BATCH_SIZE) {
\\ var batchSize = BATCH_SIZE;
\\ if (i + BATCH_SIZE > transfers.Length) {
\\ batchSize = transfers.Length - i;
\\ }
\\ var segment = new ArraySegment<Transfer>(transfers, i, batchSize);
\\ createTransfersError = client.CreateTransfers(segment.Array);
\\ // error handling omitted
\\}
,

.transfer_flags_documentation =
\\To toggle behavior for an account, combine enum values stored in the
\\`TransferFlags` object with bitwise-or:
Expand All @@ -340,80 +242,6 @@ pub const DotnetDocs = Docs{
\\* `TransferFlags.VoidPendingTransfer`
,

.transfer_flags_link_example =
\\var transfer0 = new Transfer{ /* ... account values ... */ };
\\var transfer1 = new Transfer{ /* ... account values ... */ };
\\transfer0.Flags = TransferFlags.Linked;
\\createTransfersError = client.CreateTransfers(new Transfer[] {transfer0, transfer1});
,

.transfer_flags_post_example =
\\var transfer = new Transfer
\\{
\\ Id = 2,
\\ PendingId = 1,
\\ Flags = TransferFlags.PostPendingTransfer,
\\};
\\createTransfersError = client.CreateTransfers(new Transfer[] {transfer});
\\// error handling omitted
,

.transfer_flags_void_example =
\\transfer = new Transfer
\\{
\\ Id = 2,
\\ PendingId = 1,
\\ Flags = TransferFlags.PostPendingTransfer,
\\};
\\createTransfersError = client.CreateTransfers(new Transfer[] {transfer});
\\// error handling omitted
,

.lookup_transfers_example =
\\transfers = client.LookupTransfers(new UInt128[] {1, 2});
,

.get_account_transfers_example =
\\var filter = new GetAccountTransfers
\\{
\\ AccountId = 2,
\\ Timestamp = 0, // No filter by Timestamp.
\\ Limit = 10, // Limit to ten transfers at most.
\\ Flags = GetAccountTransfersFlags.Debits | // Include transfer from the debit side.
\\ GetAccountTransfersFlags.Credits | // Include transfer from the credit side.
\\ GetAccountTransfersFlags.Reversed, // Sort by timestamp in reverse-chronological order.
\\};
\\transfers = client.GetAccountTransfers(filter);
,

.linked_events_example =
\\var batch = new System.Collections.Generic.List<Transfer>();
\\
\\// An individual transfer (successful):
\\batch.Add(new Transfer{Id = 1, /* ... rest of transfer ... */ });
\\
\\// A chain of 4 transfers (the last transfer in the chain closes the chain with linked=false):
\\batch.Add(new Transfer{Id = 2, /* ... rest of transfer ... */ Flags = TransferFlags.Linked }); // Commit/rollback.
\\batch.Add(new Transfer{Id = 3, /* ... rest of transfer ... */ Flags = TransferFlags.Linked }); // Commit/rollback.
\\batch.Add(new Transfer{Id = 2, /* ... rest of transfer ... */ Flags = TransferFlags.Linked }); // Fail with exists
\\batch.Add(new Transfer{Id = 4, /* ... rest of transfer ... */ }); // Fail without committing
\\
\\// An individual transfer (successful):
\\// This should not see any effect from the failed chain above.
\\batch.Add(new Transfer{Id = 2, /* ... rest of transfer ... */ });
\\
\\// A chain of 2 transfers (the first transfer fails the chain):
\\batch.Add(new Transfer{Id = 2, /* ... rest of transfer ... */ Flags = TransferFlags.Linked });
\\batch.Add(new Transfer{Id = 3, /* ... rest of transfer ... */ });
\\
\\// A chain of 2 transfers (successful):
\\batch.Add(new Transfer{Id = 3, /* ... rest of transfer ... */ Flags = TransferFlags.Linked });
\\batch.Add(new Transfer{Id = 4, /* ... rest of transfer ... */ });
\\
\\createTransfersError = client.CreateTransfers(batch.ToArray());
\\// error handling omitted
,

.developer_setup_documentation = "",

.developer_setup_sh_commands =
Expand Down
Loading

0 comments on commit 80a7440

Please sign in to comment.