| Index: ppapi/native_client/tests/nacl_browser/sysconf_nprocessors/sysconf_nprocessors_onln_test.cc
|
| diff --git a/chrome/test/data/nacl/exit_status/pm_exit_status_test.cc b/ppapi/native_client/tests/nacl_browser/sysconf_nprocessors/sysconf_nprocessors_onln_test.cc
|
| similarity index 61%
|
| copy from chrome/test/data/nacl/exit_status/pm_exit_status_test.cc
|
| copy to ppapi/native_client/tests/nacl_browser/sysconf_nprocessors/sysconf_nprocessors_onln_test.cc
|
| index d1289cf060f55021a9d4af5f4c064f8697cd4594..9c801f39d6e9b7d679fcecca80d1528d79a4fbca 100644
|
| --- a/chrome/test/data/nacl/exit_status/pm_exit_status_test.cc
|
| +++ b/ppapi/native_client/tests/nacl_browser/sysconf_nprocessors/sysconf_nprocessors_onln_test.cc
|
| @@ -5,59 +5,38 @@
|
| */
|
|
|
| /*
|
| - * Post-message based test for testing crash detection.
|
| + * Post-message based test for simple rpc based access to sysconf result.
|
| */
|
| -#include <string>
|
|
|
| #include <assert.h>
|
| +#include <inttypes.h>
|
| #include <stdio.h>
|
| #include <stdlib.h>
|
| -#include <inttypes.h>
|
| -#include <sys/fcntl.h>
|
| #include <string.h>
|
| +#include <sys/fcntl.h>
|
| #include <unistd.h>
|
|
|
| +#include "native_client/src/include/nacl_scoped_ptr.h"
|
| +#include "native_client/src/shared/srpc/nacl_srpc.h"
|
| +#include "native_client/src/untrusted/nacl_ppapi_util/nacl_ppapi_util.h"
|
| +#include "native_client/src/untrusted/nacl_ppapi_util/string_buffer.h"
|
| +
|
| #include <sys/nacl_syscalls.h>
|
|
|
| #include "ppapi/cpp/instance.h"
|
| #include "ppapi/cpp/module.h"
|
| #include "ppapi/cpp/var.h"
|
|
|
| -void Initialize(const pp::Var& message_data, std::string* out) {
|
| - *out = "hello world";
|
| -}
|
| -
|
| -void RunExit0(const pp::Var& message_data, std::string* out) {
|
| - *out = "good bye cruel world";
|
| - // the out string should not actually get sent back in reply, since
|
| - // we exit immediately.
|
| - exit(0);
|
| -}
|
| -
|
| -void RunExit7(const pp::Var& message_data, std::string* out) {
|
| - *out = "good bye cruel world";
|
| - // the out string should not actually get sent back in reply, since
|
| - // we exit immediately.
|
| - exit(7);
|
| -}
|
| +void NumProcessors(const pp::Var& message_data, nacl::StringBuffer* sb) {
|
| + int num_cores;
|
|
|
| -void RunExit254(const pp::Var& message_data, std::string* out) {
|
| - *out = "good bye cruel world";
|
| - // the out string should not actually get sent back in reply, since
|
| - // we exit immediately.
|
| - exit(254);
|
| -}
|
| -
|
| -void RunExitNeg2(const pp::Var& message_data, std::string* out) {
|
| - *out = "good bye cruel world";
|
| - // the out string should not actually get sent back in reply, since
|
| - // we exit immediately.
|
| - exit(-2);
|
| + num_cores = sysconf(_SC_NPROCESSORS_ONLN);
|
| + sb->Printf("%d", num_cores);
|
| }
|
|
|
| struct PostMessageHandlerDesc {
|
| char const *request;
|
| - void (*handler)(const pp::Var& message_data, std::string* out);
|
| + void (*handler)(const pp::Var& message_data, nacl::StringBuffer* out);
|
| };
|
|
|
| // This object represents one time the page says <embed>.
|
| @@ -74,24 +53,20 @@ class MyInstance : public pp::Instance {
|
| // reply string -- essentially treating this as a string-based RPC.
|
| void MyInstance::HandleMessage(const pp::Var& message_data) {
|
| static struct PostMessageHandlerDesc kMsgHandlers[] = {
|
| - { "init", Initialize },
|
| - { "exit0", RunExit0 },
|
| - { "exit7", RunExit7 },
|
| - { "exit254", RunExit254 },
|
| - { "exitneg2", RunExitNeg2 },
|
| + { "nprocessors", NumProcessors },
|
| { reinterpret_cast<char const *>(NULL),
|
| - reinterpret_cast<void (*)(const pp::Var&, std::string*)>(NULL) }
|
| + reinterpret_cast<void (*)(const pp::Var&, nacl::StringBuffer*)>(NULL) }
|
| };
|
| + nacl::StringBuffer sb;
|
|
|
| if (message_data.is_string()) {
|
| std::string op_name(message_data.AsString());
|
| + std::string reply;
|
| size_t len;
|
|
|
| fprintf(stderr, "Searching for handler for request \"%s\".\n",
|
| op_name.c_str());
|
|
|
| - std::string sb;
|
| -
|
| for (size_t ix = 0; kMsgHandlers[ix].request != NULL; ++ix) {
|
| if (op_name == kMsgHandlers[ix].request) {
|
| fprintf(stderr, "found at index %u\n", ix);
|
| @@ -100,12 +75,17 @@ void MyInstance::HandleMessage(const pp::Var& message_data) {
|
| }
|
| }
|
|
|
| - len = strlen(sb.c_str());
|
| + reply = sb.ToString();
|
| + len = strlen(reply.c_str());
|
| fprintf(stderr, "posting reply len %d\n", len);
|
| - fprintf(stderr, "posting reply \"%s\".\n", sb.c_str());
|
| + // fprintf(stderr, "posting reply \"%s\".\n", sb.ToString().c_str());
|
| + fprintf(stderr, "posting reply \"");
|
| + fflush(stderr);
|
| + write(2, reply.c_str(), len);
|
| + fprintf(stderr, "\".\n");
|
| fflush(stderr);
|
|
|
| - PostMessage(pp::Var(sb));
|
| + PostMessage(pp::Var(sb.ToString()));
|
| fprintf(stderr, "returning\n");
|
| fflush(stderr);
|
| }
|
| @@ -128,7 +108,6 @@ namespace pp {
|
|
|
| // Factory function for your specialization of the Module object.
|
| Module* CreateModule() {
|
| - printf("hello world from CreateModule\n"); fflush(NULL);
|
| return new MyModule();
|
| }
|
|
|
|
|