OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
vncapi_test.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #include <boost/bind.hpp>
6 #include "base/util.h"
7 #include "base/test/task_test_util.h"
8 #include <iostream>
9 #include <rapidjson/stringbuffer.h>
10 
11 #include "vncapi.h"
12 
14 
15 class Controller {
16  public:
17  Controller() : x(0), pc_(0),
18  kill_timer_(TimerManager::CreateTimer(*evm.io_service(), "Bla")),
19  poll_timer_(TimerManager::CreateTimer(*evm.io_service(), "Bla")),
20  done_it_(false) {
21  kill_timer_->Start(1500, boost::bind(&Controller::wait_for_done, this));
22  poll_timer_->Start(5000, boost::bind(&Controller::Main, this));
23  SetMore(true);
24 
25  std::string ip("10.84.14.38");// <-- good
26  // std::string ip("10.84.14.39");// <-- bad
27  std::string user("admin");
28  std::string passwd("c0ntrail123");
29  std::string tenant("admin");
30  std::string proto("http");
31 
32  vnccfg_.cfg_srv_ip = ip,
33  vnccfg_.cfg_srv_port = 8082,
34  vnccfg_.ks_srv_ip = ip,
35  vnccfg_.ks_srv_port = 35357,
36  vnccfg_.protocol = proto,
37  vnccfg_.user = user,
38  vnccfg_.password = passwd,
39  vnccfg_.tenant = tenant,
40 
41  vnc_.reset(new VncApi(&evm, &vnccfg_));
42  }
43 #define MAXIT 3
44  bool Main() {
45 
46  std::vector<std::string> ids;
47  std::vector<std::string> filters;
48  std::vector<std::string> parents;
49  std::vector<std::string> refs;
50  std::vector<std::string> fields;
51 
52  fields.push_back("user_defined_counter");
53 
54  vnc_->GetConfig("global-system-config", ids, filters, parents, refs,
55  fields, boost::bind(&Controller::UDCHandler, this, _1, _2, _3,
56  _4, _5, _6));
57 
58  done_it_ = ++pc_ > MAXIT;
59  std::cout << "It : " << pc_ << std::endl;
60  return !done_it_;
61 
62  }
63  void Run() {
64  evm.Run();
65  }
66  protected:
67  void SetMore(bool x) { more_ = x; }
68  void SetDone() { SetMore(false); }
69  private:
70  int x;
71  int pc_;
74  bool done_it_;
75  boost::scoped_ptr<VncApi> vnc_;
76  tbb::atomic<bool> more_;
77  std::string resp_body_;
79  bool wait_for_done() {
80  std::cout << "------ entering wait ------------\n";
81  if (more_) {
82  //std::this_thread::sleep_for(std::chrono::seconds(1));
83  //usleep(1000);
84  std::cout << "\n" << ++x << " waiting...\n";
85  return true;
86  }
87  std::cout << "\n" << x << " Done waiting...\n";
89  vnc_->Stop();
90  evm.Shutdown();
91  std::cout << "\n" << x << " all Done waiting...\n";
92  return false;
93  }
94  void UDCHandler(contrail_rapidjson::Document &jdoc, boost::system::error_code &ec,
95  std::string version, int status, std::string reason,
96  std::map<std::string, std::string> *headers) {
97 
98  if (jdoc.IsObject() && jdoc.HasMember("global-system-configs")) {
99  for (contrail_rapidjson::SizeType j=0;
100  j < jdoc["global-system-configs"].Size(); j++) {
101  const contrail_rapidjson::Value& gsc = jdoc["global-system-configs"][j]
102  ["user_defined_counter"]["counter"];
103  if (gsc.IsArray()) {
104  for (contrail_rapidjson::SizeType i = 0; i < gsc.Size(); i++)
105  std::cout << "\nname: " << gsc[i]["name"].GetString()
106  << "\npattern: " << gsc[i]["pattern"].GetString()
107  << "\n";
108  } else {
109  //SetDone();
110  }
111  }
112  }
113 
114  if (done_it_)
115  SetDone();
116  }
117 };
118 
119 int main() {
120  Controller c;
121 
122  //c.Main();
123  c.Run();
124 
125 
126  return 0;
127 }
std::string resp_body_
Definition: vncapi_test.cc:77
bool wait_for_done()
Definition: vncapi_test.cc:79
tbb::atomic< bool > more_
Definition: vncapi_test.cc:76
void SetDone()
Definition: vncapi_test.cc:68
void SetMore(bool x)
Definition: vncapi_test.cc:67
#define MAXIT
Definition: vncapi_test.cc:43
bool done_it_
Definition: vncapi_test.cc:74
static void WaitForIdle()
Timer * poll_timer_
Definition: vncapi_test.cc:73
void UDCHandler(contrail_rapidjson::Document &jdoc, boost::system::error_code &ec, std::string version, int status, std::string reason, std::map< std::string, std::string > *headers)
Definition: vncapi_test.cc:94
bool Main()
Definition: vncapi_test.cc:44
VncApiConfig vnccfg_
Definition: vncapi_test.cc:78
Timer * kill_timer_
Definition: vncapi_test.cc:72
Definition: vncapi.h:60
int ks_srv_port
Definition: vncapi.h:25
boost::scoped_ptr< VncApi > vnc_
Definition: vncapi_test.cc:75
void Run()
Definition: vncapi_test.cc:63
std::string ks_srv_ip
Definition: vncapi.h:24
bool Start(int time, Handler handler, ErrorHandler error_handler=NULL)
Definition: timer.cc:108
Definition: timer.h:54
static EventManager evm