Hi Alberto,
Can you please share the diffs you made to the test? That will help.

I tried with the following changes and it worked fine

diff --git a/library/cpp/test/sandesh_message_test.cc 
b/library/cpp/test/sandesh_message_test.cc
index f27a0c1..4aab1b6 100644
--- a/library/cpp/test/sandesh_message_test.cc
+++ b/library/cpp/test/sandesh_message_test.cc
@@ -475,12 +475,13 @@ protected:
 TEST_F(SandeshUVEAlarmTest, UVEAlarm) {
     server_->Initialize(0);
     thread_->Start();
-    int port = server_->GetPort();
+    //int port = server_->GetPort();
+    int port = 8086;
     ASSERT_LT(0, port);

     Sandesh::InitGenerator("SandeshUVEAlarmTest-Client", "localhost", "Test",
                            "0", evm_.get(), 0, NULL);
-    Sandesh::ConnectToCollector("127.0.0.1", port);
+    Sandesh::ConnectToCollector("10.84.13.23", port);
     TASK_UTIL_EXPECT_TRUE(Sandesh::client()->state() == 
SandeshClientSM::ESTABLISHED);

     // add uve
ubuntu-build04@test$

Logs from the test below:

ubuntu-build04@github-icehouse$ 
./build/debug/tools/sandesh/library/cpp/test/sandesh_message_test 
--gtest_filter=*Alarm*
Note: Google Test filter = *Alarm*
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from SandeshUVEAlarmTest
[ RUN      ] SandeshUVEAlarmTest.UVEAlarm
2015-04-14 Tue 17:26:49:453.703 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: Server 0.0.0.0:50474 Initialization complete
2015-04-14 Tue 17:26:49:453.920 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: SANDESH: ROLE             : Generator
2015-04-14 Tue 17:26:49:453.951 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: SANDESH: MODULE           : SandeshUVEAlarmTest-Client
2015-04-14 Tue 17:26:49:453.972 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: SANDESH: SOURCE           : localhost
2015-04-14 Tue 17:26:49:453.991 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: SANDESH: NODE TYPE        : Test
2015-04-14 Tue 17:26:49:454.010 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: SANDESH: INSTANCE ID      : 0
2015-04-14 Tue 17:26:49:454.029 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: SANDESH: HTTP SERVER PORT : 0
2015-04-14 Tue 17:26:49:454.185 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: HTTP Introspect Init
2015-04-14 Tue 17:26:49:454.327 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: TCP [SYS_DEBUG]: TcpServerMessageLog: Server 0.0.0.0:60366  
Initialization complete controller/src/io/tcp_server.cc 102
2015-04-14 Tue 17:26:49:454.388 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: Sandesh Http Server Port 60366
2015-04-14 Tue 17:26:49:454.449 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: SANDESH: NOT Writing http_port 60366TO : 
/tmp/SandeshUVEAlarmTest-Client.3152.http_port
2015-04-14 Tue 17:26:49:454.482 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: SANDESH: COLLECTOR : 10.84.13.23
2015-04-14 Tue 17:26:49:454.502 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: SANDESH: COLLECTOR PORT : 8086
2015-04-14 Tue 17:26:49:454.531 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: SANDESH: CONNECT TO COLLECTOR: 1
2015-04-14 Tue 17:26:49:454.665 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: Idle
2015-04-14 Tue 17:26:49:454.940 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: SANDESH: No Client: 1429057609454838 SandeshModuleClientTrace: data= 
[ name = localhost:Test:SandeshUVEAlarmTest-Client:0 client_info= [  status = 
Idle successful_connections = 0 pid = 5403 http_port = 60366 start_time = 
1429057609454700 collector_name =  primary = 0.0.0.0:0 secondary = 0.0.0.0:0 
rx_socket_stats= [  bytes = 0 calls = 0 average_bytes = 0 blocked_duration =  
blocked_count = 0 average_blocked_duration =  errors = 0 ] tx_socket_stats= [  
bytes = 0 calls = 0 average_bytes = 0 blocked_duration = 00:00:00 blocked_count 
= 0 average_blocked_duration =  errors = 0 ] ] ]
2015-04-14 Tue 17:26:49:455.030 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: primary  10.84.13.23:8086
2015-04-14 Tue 17:26:49:455.063 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: secondary  0.0.0.0:0
2015-04-14 Tue 17:26:49:471.317 PDT  ubuntu-build04 [Thread 140071566153472, 
Pid 5403]: Processing scm::EvStart in state Idle
2015-04-14 Tue 17:26:49:474.202 PDT  ubuntu-build04 [Thread 140071566153472, 
Pid 5403]: Disconnect
2015-04-14 Tue 17:26:49:474.582 PDT  ubuntu-build04 [Thread 140071566153472, 
Pid 5403]: Processing scm::EvDiscUpdate in state Disconnect
2015-04-14 Tue 17:26:49:475.213 PDT  ubuntu-build04 [Thread 140071566153472, 
Pid 5403]: Connect : Start Connect timer 10.84.13.23:8086
2015-04-14 Tue 17:26:49:475.485 PDT  ubuntu-build04 [Thread 140071566153472, 
Pid 5403]: Processing scm::EvSandeshSend in state Connect
2015-04-14 Tue 17:26:49:475.568 PDT  ubuntu-build04 [Thread 140071566153472, 
Pid 5403]: Wrong state: Connect for event: EvSandeshSend
2015-04-14 Tue 17:26:49:475.638 PDT  ubuntu-build04 [Thread 140071566153472, 
Pid 5403]: Processing scm::EvSandeshSend in state Connect
2015-04-14 Tue 17:26:49:475.650 PDT  ubuntu-build04 [Thread 140071574546176, 
Pid 5403]: SANDESH: Send FAILED: 1429057609475598 TCP [SYS_DEBUG]: 
TcpSessionMessageLog: Session 10.84.5.39:38468::10.84.13.23:8086(-1) < Active 
session connection complete controller/src/io/tcp_session.cc 228
2015-04-14 Tue 17:26:49:475.711 PDT  ubuntu-build04 [Thread 140071566153472, 
Pid 5403]: Wrong state: Connect for event: EvSandeshSend
2015-04-14 Tue 17:26:49:475.832 PDT  ubuntu-build04 [Thread 140071574546176, 
Pid 5403]: 10.84.5.39:38468::10.84.13.23:8086(-1) OnSessionEvent TCP Connected
2015-04-14 Tue 17:26:49:475.901 PDT  ubuntu-build04 [Thread 140071566153472, 
Pid 5403]: Processing scm::EvSandeshSend in state Connect
2015-04-14 Tue 17:26:49:475.949 PDT  ubuntu-build04 [Thread 140071574546176, 
Pid 5403]: 10.84.5.39:38468::10.84.13.23:8086(-1):EvTcpConnected
2015-04-14 Tue 17:26:49:476.022 PDT  ubuntu-build04 [Thread 140071566153472, 
Pid 5403]: Wrong state: Connect for event: EvSandeshSend
2015-04-14 Tue 17:26:49:476.152 PDT  ubuntu-build04 [Thread 140071566153472, 
Pid 5403]: Processing scm::EvTcpConnected in state Connect
2015-04-14 Tue 17:26:49:476.207 PDT  ubuntu-build04 [Thread 140071566153472, 
Pid 5403]: Connect : EvTcpConnected : Cancelling Connect timer
2015-04-14 Tue 17:26:49:476.286 PDT  ubuntu-build04 [Thread 140071566153472, 
Pid 5403]: ClientInit
2015-04-14 Tue 17:26:49:476.369 PDT  ubuntu-build04 [Thread 140071566153472, 
Pid 5403]: Sending Ctrl Message for localhost:SandeshUVEAlarmTest-Client:0:Test 
count 1
2015-04-14 Tue 17:26:49:476.617 PDT  ubuntu-build04 [Thread 140071566153472, 
Pid 5403]: Processing scm::EvSandeshSend in state ClientInit
2015-04-14 Tue 17:26:49:476.691 PDT  ubuntu-build04 [Thread 140071566153472, 
Pid 5403]: ClientInit : EvSandeshSend : SandeshModuleClientTrace
2015-04-14 Tue 17:26:49:476.734 PDT  ubuntu-build04 [Thread 140071566153472, 
Pid 5403]: Received UVE message in wrong state : SandeshModuleClientTrace
2015-04-14 Tue 17:26:49:483.062 PDT  ubuntu-build04 [Thread 140071461193472, 
Pid 5403]: OnMessage control in state: ClientInit
2015-04-14 Tue 17:26:49:483.271 PDT  ubuntu-build04 [Thread 140071461193472, 
Pid 5403]: Processing scm::EvSandeshMessageRecv in state ClientInit
2015-04-14 Tue 17:26:49:483.572 PDT  ubuntu-build04 [Thread 140071461193472, 
Pid 5403]: ClientInit : EvSandeshMessageRecv
2015-04-14 Tue 17:26:49:483.881 PDT  ubuntu-build04 [Thread 140071461193472, 
Pid 5403]: Received Ctrl Message with size 0
2015-04-14 Tue 17:26:49:484.023 PDT  ubuntu-build04 [Thread 140071461193472, 
Pid 5403]: SyncUVE Syncing  val name = 
localhost:Test:SandeshUVEAlarmTest-Client:0 client_info= [  status = ClientInit 
successful_connections = 1 pid = 5403 http_port = 60366 start_time = 
1429057609454700 collector_name =  primary = 10.84.13.23:8086 secondary = 
0.0.0.0:0 rx_socket_stats= [  bytes = 0 calls = 0 average_bytes = 0 
blocked_duration =  blocked_count = 0 average_blocked_duration =  errors = 0 ] 
tx_socket_stats= [  bytes = 0 calls = 0 average_bytes = 0 blocked_duration = 
00:00:00 blocked_count = 0 average_blocked_duration =  errors = 0 ] ] seq 5
2015-04-14 Tue 17:26:49:484.111 PDT  ubuntu-build04 [Thread 140071461193472, 
Pid 5403]: SyncAllMaps for ModuleClientState without seqno , total = 1
2015-04-14 Tue 17:26:49:484.156 PDT  ubuntu-build04 [Thread 140071461193472, 
Pid 5403]: SyncAllMaps for SandeshAlarmData without seqno , total = 0
2015-04-14 Tue 17:26:49:484.191 PDT  ubuntu-build04 [Thread 140071461193472, 
Pid 5403]: SyncAllMaps for SandeshUVEData without seqno , total = 0
2015-04-14 Tue 17:26:49:484.290 PDT  ubuntu-build04 [Thread 140071461193472, 
Pid 5403]: Established
2015-04-14 Tue 17:26:49:484.754 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: SyncUVE Syncing  val name = 
localhost:Test:SandeshUVEAlarmTest-Client:0 client_info= [  status = 
Established successful_connections = 1 pid = 5403 http_port = 60366 start_time 
= 1429057609454700 collector_name = a6s23 primary = 10.84.13.23:8086 secondary 
= 0.0.0.0:0 rx_socket_stats= [  bytes = 977 calls = 1 average_bytes = 977 
blocked_duration =  blocked_count = 0 average_blocked_duration =  errors = 0 ] 
tx_socket_stats= [  bytes = 1476 calls = 1 average_bytes = 1476 
blocked_duration = 00:00:00 blocked_count = 0 average_blocked_duration =  
errors = 0 ] ] seq 6
2015-04-14 Tue 17:26:49:484.974 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: SyncAllMaps for ModuleClientState without seqno , total = 1
2015-04-14 Tue 17:26:49:485.089 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: SyncUVE Syncing  val name = alarm1 description = alarm1 generated 
acknowledged = 1 seq 2
2015-04-14 Tue 17:26:49:485.202 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: SyncUVE Syncing  val name = alarm2 seq 5
2015-04-14 Tue 17:26:49:485.302 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: SyncAllMaps for SandeshAlarmData without seqno , total = 2
2015-04-14 Tue 17:26:49:485.368 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: SyncUVE Syncing  val name = uve1 x = 55 seq 2
2015-04-14 Tue 17:26:49:485.433 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: SyncUVE Syncing  val name = uve2 seq 5
2015-04-14 Tue 17:26:49:485.496 PDT  ubuntu-build04 [Thread 140071693285312, 
Pid 5403]: SyncAllMaps for SandeshUVEData without seqno , total = 2

As you can see the state did become Established.

Thanks

Megh


On Apr 14, 2015, at 8:50 AM, <aguti...@ac.upc.edu> <aguti...@ac.upc.edu> wrote:

> Hi,
> 
> I have established 2 loops after connectToCollector. One that waits the sm to 
> change to state 2 (Connected) and one that waits for state 4 (Established). 
> Just after connectToCollector the status is 0. Then, eventually, it changes 
> to 1 (Disconnected). Then to 2 and stays there.
> 
> An extract of log:
> ...
> ]: Processing scm::EvStart in state Idle
> 2015-04-14 Tue 17:42:50:824.700 CEST  Mahalanobis [Thread 140712661264128, 
> Pid 29117]: Disconnect
> Current STATUS: 0
> Current STATUS: 1
> ...
> Current STATUS: 1
> Handshake done (State 2)
> 2015-04-14 Tue 17:42:50:825.216 CEST  Mahalanobis [Thread 140712661264128, 
> Pid 29117]: Connect : Start Connect timer 192.168.100.10:8086
> 2015-04-14 Tue 17:42:50:825.346 CEST  Mahalanobis [Thread 140712661264128, 
> Pid 29117]: Processing scm::EvSandeshSend in state Connect
> 2015-04-14 Tue 17:42:50:825.367 CEST  Mahalanobis [Thread 140712661264128, 
> Pid 29117]: Wrong state: Connect for event: EvSandeshSend
> 2015-04-14 Tue 17:42:50:825.391 CEST  Mahalanobis [Thread 140712661264128, 
> Pid 29117]: Processing scm::EvSandeshSend in state Connect
> 2015-04-14 Tue 17:42:50:825.408 CEST  Mahalanobis [Thread 140712661264128, 
> Pid 29117]: Wrong state: Connect for event: EvSandeshSend
> 2015-04-14 Tue 17:42:50:825.430 CEST  Mahalanobis [Thread 140712661264128, 
> Pid 29117]: Processing scm::EvSandeshSend in state Connect
> 2015-04-14 Tue 17:42:50:825.448 CEST  Mahalanobis [Thread 140712661264128, 
> Pid 29117]: Wrong state: Connect for event: EvSandeshSend
> ...
> Waiting to the connection to be ESTABLISHED. Current status: 2
> Waiting to the connection to be ESTABLISHED. Current status: 2
> ... (and keeps looping)
> 
> It seems to be sending message in the connect to collector part. It doesn't 
> reach the sendUVE because I set a loop that waits for state to be ESTABLISHED.
> 
> Any guess? There may be something that I'm not doing good. "Wrong state: 
> Connect for event: EvSandeshSend" is quite suspicious.
> 
> Best regards,
> Alberto.
> 
> Quoting Megh Bhatt <me...@juniper.net>:
> 
>> Hi Alberto,
>> Please see inline ...
>> 
>> On Apr 13, 2015, at 2:03 PM, <aguti...@ac.upc.edu> <aguti...@ac.upc.edu> 
>> wrote:
>> 
>>> Hi Megh,
>>> 
>>> Thank you for the reply. I already went thru client_sm module but didn't 
>>> get any clue about when does the state change, thanks.
>>> 
>>> You are correct, TASK_UTIL_EXPECT_TRUE is just a conditional print. I tried 
>>> to make a loop with that condition (negated) but it seems to stay forever 
>>> there, so there must be something failing.
>> [Megh]: Are you saying even having loop with usleep() the condition is not 
>> met?
>>> 
>>> I explored the traffic using tshark and I found that there was a handshake 
>>> on the ConnectToCollector, but at SandeshUVETest::Send(uve_data1) there is 
>>> no message because client state machine is not in the correct state.
>>> 
>>> Any clue about this?
>> [Megh]: The data will be dropped till the state moves to ESTABLISHED.
>> 
>> Thanks
>> 
>> Megh
>> 
>>> 
>>> Thank you once more for your support,
>>> Alberto.
>>> 
>>> Quoting Megh Bhatt <me...@juniper.net>:
>>> 
>>>> Hi Alberto,
>>>> Sorry for the delay. Please see inline ...
>>>> 
>>>> On Apr 13, 2015, at 3:14 AM, <aguti...@ac.upc.edu> <aguti...@ac.upc.edu> 
>>>> wrote:
>>>> 
>>>>> Hi,
>>>>> 
>>>>> I got the following code modifying the test suite available in the 
>>>>> Sandesh C++ library folder:
>>>>> 
>>>>>  int port = 8086;
>>>>>  ASSERT_LT(0, port);
>>>>>  std::cout << "Initializing Generator" << std::endl;
>>>>>  Sandesh::InitGenerator("SandeshUVEAlarmTest-Client", "192.168.100.1", 
>>>>> "Test", "0", evm_.get(), 0, NULL);
>>>>>  std::cout << "Connecting to collector" << std::endl;
>>>>>  Sandesh::ConnectToCollector("192.168.100.10", port);
>>>>>  std::cout << "Handshake done" << std::endl;
>>>>>  TASK_UTIL_EXPECT_TRUE(Sandesh::client()->state() == 
>>>>> SandeshClientSM::ESTABLISHED);
>>>> [Megh]: This should make sure that the client status is ESTABLISHED before 
>>>> sending the message below.
>>>>>  std::cout << "Connection to collector should be established" << 
>>>>> std::endl;
>>>>>  // add uve
>>>>>  // case 0
>>>>>  SandeshUVEData uve_data1;
>>>>>  uve_data1.set_name("uve1");
>>>>>  SandeshUVETest::Send(uve_data1);
>>>>> 
>>>>> Here I disabled the sever initialization step as I want to use a real 
>>>>> collector node (192.168.100.10). The execution is sent from IP 
>>>>> 192.168.100.1.
>>>>> 
>>>>> However, when evaluating the client status it's not 
>>>>> SandeshClientSM::ESTABLISHED, it's in fact status 2, which is CONNECT. So 
>>>>> it seems to be a step missing.
>>>>> 
>>>>> On the connector log I get the following output for the execution:
>>>>> 2015-04-13 Mon 10:05:02:264.921 UTC  contrail [Thread 140679780972416, 
>>>>> Pid 1975]: Session 192.168.100.10:8086::192.168.100.1:54945(15)< Accepted 
>>>>> session from 192.168.100.1:54945
>>>>> 
>>>>> 2015-04-13 Mon 10:05:21:736.472 UTC  contrail [Thread 140679780972416, 
>>>>> Pid 1975]: Session 192.168.100.10:8086::192.168.100.1:54945(15)< Read 
>>>>> failed due to error 2 : End of file
>>>>> 
>>>>> On the application I get the following:
>>>>> 2015-04-13 Mon 12:11:17:354.925 CEST  Mahalanobis [Thread 
>>>>> 140662758741952, Pid 5233]: primary  192.168.100.10:8086
>>>>> 2015-04-13 Mon 12:11:17:354.945 CEST  Mahalanobis [Thread 
>>>>> 140662758741952, Pid 5233]: secondary  0.0.0.0:0
>>>>> Handshake done
>>>>> 2015-04-13 Mon 12:11:17:355.309 CEST  Mahalanobis [Thread 
>>>>> 140662631671552, Pid 5233]: Processing scm::EvStart in state Idle
>>>>> 2015-04-13 Mon 12:11:17:355.415 CEST  Mahalanobis [Thread 
>>>>> 140662631671552, Pid 5233]: Disconnect
>>>>> 2015-04-13 Mon 12:11:17:355.566 CEST  Mahalanobis [Thread 
>>>>> 140662631671552, Pid 5233]: Processing scm::EvDiscUpdate in state 
>>>>> Disconnect
>>>>> 2015-04-13 Mon 12:11:17:355.850 CEST  Mahalanobis [Thread 
>>>>> 140662631671552, Pid 5233]: Connect : Start Connect timer 
>>>>> 192.168.100.10:8086
>>>> [Megh]: From the logs it does not seem that the state machine has moved to 
>>>> ESTABLISHED. Your code should have failed when checking for the state 
>>>> above.
>>>>> 2015-04-13 Mon 12:11:17:355.984 CEST  Mahalanobis [Thread 
>>>>> 140662631671552, Pid 5233]: Processing scm::EvSandeshSend in state Connect
>>>>> 2015-04-13 Mon 12:11:17:356.012 CEST  Mahalanobis [Thread 
>>>>> 140662631671552, Pid 5233]: Wrong state: Connect for event: EvSandeshSend
>>>>> 2015-04-13 Mon 12:11:17:356.043 CEST  Mahalanobis [Thread 
>>>>> 140662631671552, Pid 5233]: Processing scm::EvSandeshSend in state Connect
>>>>> 2015-04-13 Mon 12:11:17:356.065 CEST  Mahalanobis [Thread 
>>>>> 140662631671552, Pid 5233]: Wrong state: Connect for event: EvSandeshSend
>>>>> 2015-04-13 Mon 12:11:17:356.093 CEST  Mahalanobis [Thread 
>>>>> 140662631671552, Pid 5233]: Processing scm::EvSandeshSend in state Connect
>>>>> 2015-04-13 Mon 12:11:17:356.116 CEST  Mahalanobis [Thread 
>>>>> 140662631671552, Pid 5233]: Wrong state: Connect for event: EvSandeshSend
>>>>> 
>>>>> 
>>>>> 
>>>>> So, it seems to connects correctly but fails sending the UVE.
>>>>> 
>>>>> 
>>>>> 
>>>>> Could anyone help me with this? Pointers to documentation would be really 
>>>>> valuable.
>>>> My guess is that the TASK_UTIL_EXPECT_TRUE code is not waiting enough. Can 
>>>> you please check?
>>>> 
>>>> The client state machine after connecting to the collector, sends a 
>>>> control message to move to ClientInit state, and after that on receipt of 
>>>> the reply from the collector moves to established. You can look at the 
>>>> code in sandesh_client_sm.cc for details.
>>>> https://github.com/Juniper/contrail-sandesh/blob/master/library/cpp/sandesh_client_sm.cc
>>>> 
>>>> Thanks
>>>> 
>>>> Megh
>>>>> 
>>>>> Best regards,
>>>>> Alberto.
>>>>> 
>>>>> Quoting aguti...@ac.upc.edu:
>>>>> 
>>>>>> Hi Megh,
>>>>>> 
>>>>>> Thanks for your help. With that I think I got the compilation at hand.
>>>>>> 
>>>>>> Now I'm trying to do a small application to send one message and die.
>>>>>> 
>>>>>> I defined the following toy sandesh for testing:
>>>>>> struct UveVirtualNetworkAgent {
>>>>>>  1: string name(key="ObjectVNTable")
>>>>>>  2: optional i32 cpu
>>>>>> }
>>>>>> 
>>>>>> uve sandesh UveVirtualNetworkAgentTrace {
>>>>>>   1: UveVirtualNetworkAgent data;
>>>>>> }
>>>>>> 
>>>>>> Then I did the following code:
>>>>>> int main() {
>>>>>>  Sandesh::InitGenerator()
>>>>>> 
>>>>>>  UveVirtualNetworkAgent a;
>>>>>>  a.set_name("TestUnit");
>>>>>>  a.set_cpu(100);
>>>>>>  UveVirtualNetworkAgentTrace::Send(a);
>>>>>> }
>>>>>> 
>>>>>> However I don't know which of the 2 InitGenerator functions from the 
>>>>>> Sandesh module should I use and what is the meaning of each parameter.
>>>>>> 
>>>>>>  static bool InitGenerator(const std::string &module,
>>>>>>          const std::string &source,
>>>>>>          const std::string &node_type,
>>>>>>          const std::string &instance_id,
>>>>>>          EventManager *evm,
>>>>>>          unsigned short http_port,
>>>>>>          CollectorSubFn csf,
>>>>>>          const std::vector<std::string> &collectors,
>>>>>>          SandeshContext *client_context = NULL);
>>>>>> 
>>>>>>  static void InitGenerator(const std::string &module,
>>>>>>          const std::string &source,
>>>>>>          const std::string &node_type,
>>>>>>          const std::string &instance_id,
>>>>>>          EventManager *evm,
>>>>>>          unsigned short http_port,
>>>>>>          SandeshContext *client_context = NULL);
>>>>>> 
>>>>>> Is there any source where it explains this part? I haven't found it yet.
>>>>>> 
>>>>>> And one more question: Does setting name(key="ObjectVNTable") to 
>>>>>> "TestUnit" create a new table in the database that I could query using 
>>>>>> de API of the analytics module?
>>>>>> 
>>>>>> Thank you for the support.
>>>>>> 
>>>>>> Best regards,
>>>>>> Alberto.
>>>>>> 
>>>>>> Quoting Megh Bhatt <me...@juniper.net>:
>>>>>> 
>>>>>>> Hi Alberto,
>>>>>>> Please see inline ....
>>>>>>> 
>>>>>>> On Apr 8, 2015, at 1:54 AM, 
>>>>>>> aguti...@ac.upc.edu<mailto:aguti...@ac.upc.edu> wrote:
>>>>>>> 
>>>>>>> Dear all,
>>>>>>> 
>>>>>>> I'm trying to create a new message to send with Sandesh protocol, 
>>>>>>> however I don't know how to compile the generated code.
>>>>>>> 
>>>>>>> Just a high level overview which you might already know. The sandesh 
>>>>>>> compiler/code generator will be present in build/bin/sandesh after you 
>>>>>>> execute scons at the top level. The source code for same is at This is 
>>>>>>> used to generate the python/C++ code based on the .sandesh file. The 
>>>>>>> generated code - .py files for python and .cpp files for C++ need to be 
>>>>>>> used with the pysandesh package for python and libsandesh for C++ in 
>>>>>>> client applications to send Sandesh messages to the contrail collector.
>>>>>>> 
>>>>>>> Are you using C++ or python?
>>>>>>> 
>>>>>>> We intend to use this messaging for testing purposes (at the moment) by 
>>>>>>> means of an extra application which will send Sandesh messages each 
>>>>>>> second.
>>>>>>> 
>>>>>>> 
>>>>>>> I have found the following explaination for the compilation with Scons:
>>>>>>> --------
>>>>>>> To use Sandesh, the following needs to be added to the module 
>>>>>>> SConscript:
>>>>>>> /
>>>>>>> # Generate the source files
>>>>>>> SandeshGenFiles  = env.SandeshGenCpp('VNS.sandesh')
>>>>>>> SandeshGenFiles += env.SandeshGenCpp('VNSwitch.sandesh')
>>>>>>> 
>>>>>>> # The above returns VNS_types.h, VNS_types.cpp, VNS_constants.h
>>>>>>> # VNS_constants.cpp, VNSwitch_types.h, VNSwitch_types.cpp,
>>>>>>> # VNSwitch_constants.h, VNSwitch_constants.cpp
>>>>>>> 
>>>>>>> # To include the header files above from your module's sources
>>>>>>> env.Append(CPPPATH = env['TOP'])
>>>>>>> 
>>>>>>> # Extract the .cpp files to be used as sources
>>>>>>> SandeshGenSrcs = env.ExtractCpp(SandeshGenFiles)
>>>>>>> 
>>>>>>> Add SandeshGenSrcs to the module source files
>>>>>>> 
>>>>>>> Add libsandesh, and libbase to the module libraries.
>>>>>>> --------
>>>>>>> 
>>>>>>> However I don't really get what's going on (I'm new to Scons).
>>>>>>> 
>>>>>>> The SandeshGenCpp function/ scons builder is defined in 
>>>>>>> tools/build/rules.py - https://github.com/Juniper/contrail-build
>>>>>>> 
>>>>>>> Below is a relevant snippet ...
>>>>>>> 
>>>>>>> 
>>>>>>> # SandeshGenCpp Methods
>>>>>>>     def SandeshCppBuilder(target, source, env):
>>>>>>>     opath = target[0].dir.path
>>>>>>>     sname = os.path.join(opath, os.path.splitext(source[0].name)[0])
>>>>>>> 
>>>>>>>     code = subprocess.call(env['SANDESH'] + ' --gen cpp --gen html -I 
>>>>>>> controller/src/ -I tools -out '
>>>>>>>     + opath + " " + source[0].path, shell=True)
>>>>>>>     if code != 0:
>>>>>>>     raise SCons.Errors.StopError(SandeshCodeGeneratorError,
>>>>>>>     'SandeshCpp code generation failed')
>>>>>>>     tname = sname + "_html_template.cpp"
>>>>>>>     hname = os.path.basename(sname + ".xml")
>>>>>>>     cname = sname + "_html.cpp"
>>>>>>>     if not env.Detect('xxd'):
>>>>>>>     raise SCons.Errors.StopError(SandeshCodeGeneratorError,
>>>>>>>     'xxd not detected on system')
>>>>>>>     os.system("echo \"namespace {\"" + " >> " + cname)
>>>>>>>     os.system("(cd " + opath + " ; xxd -i " + hname + " >> " + 
>>>>>>> os.path.basename(cname) + " )")
>>>>>>>     os.system("echo \"}\"" + " >> " + cname)
>>>>>>>     os.system("cat " + tname + " >> " + cname)
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> As you can see, it runs build/bin/sandesh --gen cpp --gen html  <other 
>>>>>>> options> <.sandesh file> to produce the .cpp, .h files which then need 
>>>>>>> to be compiled in the client application.
>>>>>>> 
>>>>>>> 
>>>>>>> I tried to copy the SConscript of the control module and adapt it but 
>>>>>>> without results.
>>>>>>> 
>>>>>>> Can anyone help me?
>>>>>>> 
>>>>>>> Hope the above helps and please let me know if any more information is 
>>>>>>> needed.
>>>>>>> 
>>>>>>> Thanks
>>>>>>> 
>>>>>>> Megh
>>>>>>> 
>>>>>>> 
>>>>>>> Best Regards,
>>>>>>> Alberto.
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> Dev mailing list
>>>>>>> Dev@lists.opencontrail.org<mailto:Dev@lists.opencontrail.org>
>>>>>>> http://lists.opencontrail.org/mailman/listinfo/dev_lists.opencontrail.org
>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>>> 
>>>> 
>>>> 
>>> 
>>> 
>> 
>> 
> 
> 


_______________________________________________
Dev mailing list
Dev@lists.opencontrail.org
http://lists.opencontrail.org/mailman/listinfo/dev_lists.opencontrail.org

Reply via email to