From 06f6049d5f10f286bb33de99cec32c6b703184d6 Mon Sep 17 00:00:00 2001
From: Francois Henrotte <francois.henrotte@ulg.ac.be>
Date: Thu, 29 Nov 2012 12:58:35 +0000
Subject: [PATCH]  loader as a test native client

---
 contrib/onelab/OnelabParser.cpp |  2 ++
 contrib/onelab/loader.cpp       | 32 ++++++++++++++++++++++++++++++++
 contrib/onelab/myOS.cpp         |  4 ++--
 3 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/contrib/onelab/OnelabParser.cpp b/contrib/onelab/OnelabParser.cpp
index d7fd7ff5af..f4d4096319 100644
--- a/contrib/onelab/OnelabParser.cpp
+++ b/contrib/onelab/OnelabParser.cpp
@@ -1676,4 +1676,6 @@ void MetaModel::client_sentence(const std::string &name,
 	OLMsg::Error("Unknown client <%s>", name.c_str());
     }
   }
+  else
+    OLMsg::Error("Unknown action <%s>", action.c_str());
 }
diff --git a/contrib/onelab/loader.cpp b/contrib/onelab/loader.cpp
index 9ac1123599..f40a51cd85 100644
--- a/contrib/onelab/loader.cpp
+++ b/contrib/onelab/loader.cpp
@@ -236,6 +236,7 @@ int main(int argc, char *argv[]){
 	launchMenu=true;
       }
       else if(!strcmp(argv[i] + 1, "lol")) {
+	//loader used to call non-native clients (type=encapsulated) 
 	std::string clientName=argv[i+1];
 	client = new onelab::remoteNetworkClient(clientName,argv[i+2]);
 	if(client){
@@ -265,6 +266,37 @@ int main(int argc, char *argv[]){
 	}
 	exit(1);
       }
+      else if(!strcmp(argv[i] + 1, "onelab")) {
+	//loader used as a test native client
+	client = new onelab::remoteNetworkClient(argv[i+1],argv[i+2]);
+	if(!client){
+	  std::cout << "I have no client\n";
+	  exit(1);
+	}
+	std::vector<onelab::string> strings;
+	client->get(strings,client->getName()+"/9CheckCommand"); 
+	if(strings.empty()){ // initialize
+	  onelab::string s(client->getName()+"/9CheckCommand","-a");
+	  client->set(s);
+	  onelab::number o(client->getName()+"/Initialized",1);
+	  client->set(o);
+	}
+	else{ 
+	  std::cout << "I am initialized: CheckCommand=<" 
+		    << strings[0].getValue() << ">" << std::endl;	
+	  onelab::number o("alpha",123456);
+	  client->set(o);
+	  client->get(strings,"MESSAGE"); 
+	  if(strings.size()){
+	    std::cout << "I have to tell you: " << strings[0].getValue() << std::endl;
+	  }
+	  std::cout << "Now sleeping for 5s\n";
+	  SleepInSeconds(5);
+	  std::cout << "Awake again\n";
+	}
+	delete client;
+	return 0;
+      }
       else if(!strcmp(argv[i] + 1, "v")) {
         i++;
         if(argv[i])
diff --git a/contrib/onelab/myOS.cpp b/contrib/onelab/myOS.cpp
index 030d07ae7f..a2b8ffb5d2 100644
--- a/contrib/onelab/myOS.cpp
+++ b/contrib/onelab/myOS.cpp
@@ -184,7 +184,7 @@ int SystemCall(const std::string &command, bool blocking)
   PROCESS_INFORMATION prInfo;
   memset(&suInfo, 0, sizeof(suInfo));
   suInfo.cb = sizeof(suInfo);
-  //OLMsg::Info("Calling <%s>", command.c_str());
+  OLMsg::Info("Calling <%s>", command.c_str());
   if(blocking){
     CreateProcess(NULL, (char*)command.c_str(), NULL, NULL, FALSE,
                   NORMAL_PRIORITY_CLASS, NULL, NULL,
@@ -210,7 +210,7 @@ int SystemCall(const std::string &command, bool blocking)
   }
   std::string cmd(command);
   if(!blocking) cmd += " &";
-  //OLMsg::Info("Calling <%s>", cmd.c_str());
+  OLMsg::Info("Calling <%s>", cmd.c_str());
   return system(cmd.c_str());
 #endif
 }
-- 
GitLab