summaryrefslogtreecommitdiff
path: root/source4/lib/registry/tests/generic.c
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2007-08-26 15:16:40 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 15:02:34 -0500
commitb409d4120f9ae451f93a2322267c0f346531d9f3 (patch)
tree04ac2189f16db99537c36320a9d9e7c3c9d43b6f /source4/lib/registry/tests/generic.c
parent8e789517b723955f1530837058d5e9fe98aba19f (diff)
downloadsamba-b409d4120f9ae451f93a2322267c0f346531d9f3.tar.gz
samba-b409d4120f9ae451f93a2322267c0f346531d9f3.tar.bz2
samba-b409d4120f9ae451f93a2322267c0f346531d9f3.zip
r24667: Finally merge the registry improvements that Wilco Baan Hofman and I have
been working on for at least half a year now. Contains the following improvements: * proper layering (finally!) for the registry library. Distinction is now made between 'real' backends (local, remote, wine, etc) and the low-level hive backends (regf, creg, ldb, ...) that are only used by the local registry backend * tests for all important hive and registry operations * re-enable RPC-WINREG tests (still needs more work though, as some return values aren't checked yet) * write support for REGF files * dir backend now supports setting/reading values, creating keys * support for storing security descriptors * remove CREG backend as it was incomplete, didn't match the data model and wasn't used at all anyway * support for parsing ADM files as used by the policy editor (see lib/policy) * support for parsing PREG files (format used by .POL files) * new streaming interface for registry diffs (improves speed and memory usage for regdiff/regpatch significantly) ... and fixes a large number of bugs in the registry code (This used to be commit 7a1eec6358bc863dfc671c542b7185d3e39d7b5a)
Diffstat (limited to 'source4/lib/registry/tests/generic.c')
-rw-r--r--source4/lib/registry/tests/generic.c66
1 files changed, 42 insertions, 24 deletions
diff --git a/source4/lib/registry/tests/generic.c b/source4/lib/registry/tests/generic.c
index 1f0c89e058..6595f86b18 100644
--- a/source4/lib/registry/tests/generic.c
+++ b/source4/lib/registry/tests/generic.c
@@ -3,7 +3,7 @@
local testing of registry library
- Copyright (C) Jelmer Vernooij 2005
+ Copyright (C) Jelmer Vernooij 2005-2007
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -25,6 +25,10 @@
#include "torture/torture.h"
#include "librpc/gen_ndr/winreg.h"
+struct torture_suite *torture_registry_hive(TALLOC_CTX *mem_ctx);
+struct torture_suite *torture_registry_registry(TALLOC_CTX *mem_ctx);
+struct torture_suite *torture_registry_diff(TALLOC_CTX *mem_ctx);
+
static bool test_str_regtype(struct torture_context *ctx)
{
torture_assert_str_equal(ctx, str_regtype(1), "REG_SZ", "REG_SZ failed");
@@ -38,7 +42,8 @@ static bool test_reg_val_data_string_dword(struct torture_context *ctx)
{
uint32_t d = 0x20;
DATA_BLOB db = { (uint8_t *)&d, sizeof(d) };
- torture_assert_str_equal(ctx, "0x20", reg_val_data_string(ctx, REG_DWORD, &db), "dword failed");
+ torture_assert_str_equal(ctx, "0x20",
+ reg_val_data_string(ctx, REG_DWORD, db), "dword failed");
return true;
}
@@ -46,9 +51,9 @@ static bool test_reg_val_data_string_sz(struct torture_context *ctx)
{
DATA_BLOB db;
db.length = convert_string_talloc(ctx, CH_UNIX, CH_UTF16, "bla", 3, (void **)&db.data);
- torture_assert_str_equal(ctx, "bla", reg_val_data_string(ctx, REG_SZ, &db), "sz failed");
+ torture_assert_str_equal(ctx, "bla", reg_val_data_string(ctx, REG_SZ, db), "sz failed");
db.length = 4;
- torture_assert_str_equal(ctx, "bl", reg_val_data_string(ctx, REG_SZ, &db), "sz failed");
+ torture_assert_str_equal(ctx, "bl", reg_val_data_string(ctx, REG_SZ, db), "sz failed");
return true;
}
@@ -56,7 +61,9 @@ static bool test_reg_val_data_string_binary(struct torture_context *ctx)
{
uint8_t x[] = { 0x1, 0x2, 0x3, 0x4 };
DATA_BLOB db = { x, 4 };
- torture_assert_str_equal(ctx, "01020304", reg_val_data_string(ctx, REG_BINARY, &db), "binary failed");
+ torture_assert_str_equal(ctx, "01020304",
+ reg_val_data_string(ctx, REG_BINARY, db),
+ "binary failed");
return true;
}
@@ -64,18 +71,20 @@ static bool test_reg_val_data_string_binary(struct torture_context *ctx)
static bool test_reg_val_data_string_empty(struct torture_context *ctx)
{
DATA_BLOB db = { NULL, 0 };
- torture_assert_str_equal(ctx, "", reg_val_data_string(ctx, REG_BINARY, &db), "empty failed");
+ torture_assert_str_equal(ctx, "",
+ reg_val_data_string(ctx, REG_BINARY, db), "empty failed");
return true;
}
static bool test_reg_val_description(struct torture_context *ctx)
{
- struct registry_value val;
- val.name = "camel";
- val.data_type = REG_SZ;
- val.data.length = convert_string_talloc(ctx, CH_UNIX, CH_UTF16, "stationary traveller",
- strlen("stationary traveller"), (void **)&val.data.data);
- torture_assert_str_equal(ctx, "camel = REG_SZ : stationary traveller", reg_val_description(ctx, &val),
+ DATA_BLOB data;
+ data.length = convert_string_talloc(ctx, CH_UNIX, CH_UTF16,
+ "stationary traveller",
+ strlen("stationary traveller"),
+ (void **)&data.data);
+ torture_assert_str_equal(ctx, "camel = REG_SZ : stationary traveller",
+ reg_val_description(ctx, "camel", REG_SZ, data),
"reg_val_description failed");
return true;
}
@@ -83,12 +92,11 @@ static bool test_reg_val_description(struct torture_context *ctx)
static bool test_reg_val_description_nullname(struct torture_context *ctx)
{
- struct registry_value val;
- val.name = NULL;
- val.data_type = REG_SZ;
- val.data.length = convert_string_talloc(ctx, CH_UNIX, CH_UTF16, "west berlin",
- strlen("west berlin"), (void **)&val.data.data);
- torture_assert_str_equal(ctx, "<No Name> = REG_SZ : west berlin", reg_val_description(ctx, &val),
+ DATA_BLOB data;
+ data.length = convert_string_talloc(ctx, CH_UNIX, CH_UTF16, "west berlin",
+ strlen("west berlin"), (void **)&data.data);
+ torture_assert_str_equal(ctx, "<No Name> = REG_SZ : west berlin",
+ reg_val_description(ctx, NULL, REG_SZ, data),
"description with null name failed");
return true;
}
@@ -98,12 +106,22 @@ struct torture_suite *torture_registry(TALLOC_CTX *mem_ctx)
struct torture_suite *suite = torture_suite_create(mem_ctx,
"REGISTRY");
torture_suite_add_simple_test(suite, "str_regtype", test_str_regtype);
- torture_suite_add_simple_test(suite, "reg_val_data_string dword", test_reg_val_data_string_dword);
- torture_suite_add_simple_test(suite, "reg_val_data_string sz", test_reg_val_data_string_sz);
- torture_suite_add_simple_test(suite, "reg_val_data_string binary", test_reg_val_data_string_binary);
- torture_suite_add_simple_test(suite, "reg_val_data_string empty", test_reg_val_data_string_empty);
- torture_suite_add_simple_test(suite, "reg_val_description", test_reg_val_description);
- torture_suite_add_simple_test(suite, "reg_val_description null", test_reg_val_description_nullname);
+ torture_suite_add_simple_test(suite, "reg_val_data_string dword",
+ test_reg_val_data_string_dword);
+ torture_suite_add_simple_test(suite, "reg_val_data_string sz",
+ test_reg_val_data_string_sz);
+ torture_suite_add_simple_test(suite, "reg_val_data_string binary",
+ test_reg_val_data_string_binary);
+ torture_suite_add_simple_test(suite, "reg_val_data_string empty",
+ test_reg_val_data_string_empty);
+ torture_suite_add_simple_test(suite, "reg_val_description",
+ test_reg_val_description);
+ torture_suite_add_simple_test(suite, "reg_val_description null",
+ test_reg_val_description_nullname);
+
+ torture_suite_add_suite(suite, torture_registry_hive(mem_ctx));
+ torture_suite_add_suite(suite, torture_registry_registry(mem_ctx));
+ torture_suite_add_suite(suite, torture_registry_diff(mem_ctx));
return suite;
}