Index: src/trusted/gio/gio_shm_unbounded_test.c |
diff --git a/src/trusted/gio/gio_shm_unbounded_test.c b/src/trusted/gio/gio_shm_unbounded_test.c |
deleted file mode 100644 |
index 72b4083454f53ffbe7c5f2c847e751afb037c66f..0000000000000000000000000000000000000000 |
--- a/src/trusted/gio/gio_shm_unbounded_test.c |
+++ /dev/null |
@@ -1,202 +0,0 @@ |
-/* |
- * Copyright (c) 2010 The Native Client Authors. All rights reserved. |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
-#include <stdio.h> |
-#include <stdlib.h> |
- |
-#include "native_client/src/include/portability.h" |
- |
-#include "native_client/src/shared/platform/nacl_check.h" |
- |
-#include "native_client/src/trusted/desc/nrd_all_modules.h" |
-#include "native_client/src/trusted/gio/gio_shm_unbounded.h" |
-#include "native_client/src/trusted/service_runtime/include/bits/mman.h" |
-#include "native_client/src/trusted/service_runtime/include/sys/errno.h" |
-#include "native_client/src/trusted/service_runtime/include/sys/stat.h" |
-#include "native_client/src/trusted/service_runtime/nacl_config.h" |
- |
- |
-size_t gNumBytes = 10 * NACL_MAP_PAGESIZE; |
-uint32_t gLinearGeneratorSeed = 0xdeadbeef; |
- |
-struct DataGenerator { |
- void (*Dtor)(struct DataGenerator *self); |
- uint8_t (*Next)(struct DataGenerator *self); |
-}; |
- |
-struct LinearGenerator { |
- struct DataGenerator base; |
- uint32_t state; |
-}; |
- |
-uint8_t LinearGeneratorNext(struct DataGenerator *vself) { |
- struct LinearGenerator *self = (struct LinearGenerator *) vself; |
- uint8_t rv; |
- |
- rv = (uint8_t) (self->state ^ (self->state >> 8) ^ (self->state >> 16)); |
- self->state = 1664525 * self->state + 1013904223; /* numerical recipies */ |
- return rv; |
-} |
- |
-void LinearGeneratorDtor(struct DataGenerator *vself) { |
- struct LinearGenerator *self = (struct LinearGenerator *) vself; |
- self->base.Dtor = NULL; |
- self->base.Next = NULL; |
-} |
- |
-void LinearGeneratorCtor(struct LinearGenerator *self) { |
- self->base.Dtor = LinearGeneratorDtor; |
- self->base.Next = LinearGeneratorNext; |
- self->state = gLinearGeneratorSeed; |
-} |
- |
-size_t FillGioWithGenerator(struct NaClGioShmUnbounded *ngsup, |
- struct DataGenerator *genp, |
- size_t nbytes) { |
- size_t nerrs = 0; |
- size_t ix; |
- uint8_t buf[256]; |
- size_t jx; |
- |
- (*ngsup->base.vtbl->Seek)(&ngsup->base, 0, SEEK_SET); |
- for (ix = 0; ix < nbytes; ) { |
- size_t ask; |
- ssize_t got; |
- |
- ask = (*genp->Next)(genp) + 1; |
- if (ask > (nbytes - ix)) { |
- ask = nbytes - ix; |
- } |
- for (jx = 0; jx < ask; ++jx) { |
- buf[jx] = (*genp->Next)(genp); |
- NaClLog(5, " %02x\n", buf[jx]); |
- } |
- NaClLog(1, "gio_shm_unbounded_test: writing %"NACL_PRIdS" bytes\n", ask); |
- if ((size_t) (got = (*ngsup->base.vtbl->Write)(&ngsup->base, buf, ask)) |
- != ask) { |
- ++nerrs; |
- NaClLog(LOG_FATAL, |
- ("gio_shm_unbounded_test: unexpected write return. ask" |
- " %"NACL_PRIdS" bytes, got %"NACL_PRIdS"\n"), |
- ask, |
- got); |
- } |
- ix += ask; |
- } |
- return nerrs; |
-} |
- |
-size_t CheckGioWithGenerator(struct NaClGioShmUnbounded *ngsup, |
- struct DataGenerator *genp, |
- size_t nbytes) { |
- size_t nerrs = 0; |
- size_t ix; |
- uint8_t buf[256]; |
- uint8_t actual[256]; |
- size_t jx; |
- |
- (*ngsup->base.vtbl->Seek)(&ngsup->base, 0, SEEK_SET); |
- for (ix = 0; ix < nbytes; ) { |
- size_t ask; |
- ssize_t got; |
- |
- ask = (*genp->Next)(genp) + 1; |
- |
- if (ask > (nbytes - ix)) { |
- ask = nbytes - ix; |
- } |
- for (jx = 0; jx < ask; ++jx) { |
- buf[jx] = (*genp->Next)(genp); |
- NaClLog(5, " %02x\n", buf[jx]); |
- } |
- NaClLog(1, |
- ("gio_shm_unbounded_test: reading %"NACL_PRIdS |
- " bytes, %"NACL_PRIdS" remains\n"), |
- ask, |
- (nbytes - ix)); |
- if ((size_t) (got = (*ngsup->base.vtbl->Read)(&ngsup->base, actual, ask)) |
- != ask) { |
- ++nerrs; |
- NaClLog(LOG_FATAL, |
- ("gio_shm_unbounded_test: unexpected read return. ask" |
- " %"NACL_PRIdS" bytes, got %"NACL_PRIdS"\n"), |
- ask, |
- got); |
- } |
- for (jx = 0; jx < ask; ++jx) { |
- if (buf[jx] != actual[jx]) { |
- ++nerrs; |
- NaClLog(1, |
- ("gio_shm_unbounded_test: byte %"NACL_PRIdS" differs:" |
- " expected 0x%02x, got 0x%02x\n"), |
- jx, |
- buf[jx], |
- actual[jx]); |
- } |
- } |
- ix += ask; |
- } |
- return nerrs; |
-} |
- |
-size_t TestWithDataGenerators(struct NaClGioShmUnbounded *ngsup) { |
- size_t nerrs = 0; |
- struct LinearGenerator lg; |
- |
- LinearGeneratorCtor(&lg); |
- nerrs += FillGioWithGenerator(ngsup, (struct DataGenerator *) &lg, gNumBytes); |
- (*lg.base.Dtor)((struct DataGenerator *) &lg); |
- |
- LinearGeneratorCtor(&lg); |
- nerrs += CheckGioWithGenerator(ngsup, (struct DataGenerator *) &lg, |
- gNumBytes); |
- (*lg.base.Dtor)((struct DataGenerator *) &lg); |
- |
- return nerrs; |
-} |
- |
- |
-int main(int ac, char **av) { |
- int opt; |
- size_t nerrs = 0; |
- struct NaClGioShmUnbounded ngsu; |
- |
- NaClNrdAllModulesInit(); |
- |
- while (EOF != (opt = getopt(ac, av, "n:s:"))) { |
- switch (opt) { |
- case 'n': |
- gNumBytes = (size_t) strtoul(optarg, (char **) NULL, 0); |
- break; |
- case 's': |
- gLinearGeneratorSeed = (uint32_t) strtoul(optarg, (char **) NULL, 0); |
- break; |
- default: |
- fprintf(stderr, |
- "Usage: gio_shm_unbounded_test [-n nbytes] [-s seed]\n"); |
- return EXIT_FAILURE; |
- } |
- } |
- |
- printf("Writing %"NACL_PRIdS" bytes.\n", gNumBytes); |
- printf("Seed %"NACL_PRIu32".\n", gLinearGeneratorSeed); |
- |
- if (!NaClGioShmUnboundedCtor(&ngsu)) { |
- fprintf(stderr, "NaClGioShmUnboundedCtor failed\n"); |
- ++nerrs; |
- goto unrecoverable; |
- } |
- |
- nerrs += TestWithDataGenerators(&ngsu); |
- |
- (*ngsu.base.vtbl->Dtor)(&ngsu.base); |
- |
- unrecoverable: |
- NaClNrdAllModulesFini(); |
- |
- printf("%s\n", (0 == nerrs) ? "PASSED" : "FAILED"); |
- return (0 == nerrs) ? EXIT_SUCCESS : EXIT_FAILURE; |
-} |