Support for split testsuite, launchmon in testsuite
[dyninst.git] / testsuite / src / testdriver_be.C
1 /*
2  * Copyright (c) 1996-2009 Barton P. Miller
3  * 
4  * We provide the Paradyn Parallel Performance Tools (below
5  * described as "Paradyn") on an AS IS basis, and do not warrant its
6  * validity or performance.  We reserve the right to update, modify,
7  * or discontinue this software at any time.  We shall have no
8  * obligation to supply such updates or modifications or any other
9  * form of support to you.
10  * 
11  * By your use of Paradyn, you understand and agree that we (or any
12  * other person or entity with proprietary rights in Paradyn) are
13  * under no obligation to provide either maintenance services,
14  * update services, notices of latent defects, or correction of
15  * defects for Paradyn.
16  * 
17  * This library is free software; you can redistribute it and/or
18  * modify it under the terms of the GNU Lesser General Public
19  * License as published by the Free Software Foundation; either
20  * version 2.1 of the License, or (at your option) any later version.
21  * 
22  * This library is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
25  * Lesser General Public License for more details.
26  * 
27  * You should have received a copy of the GNU Lesser General Public
28  * License along with this library; if not, write to the Free Software
29  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
30  */
31
32 #include "ParameterDict.h"
33 #include "MutateeStart.h"
34 #include "CmdLine.h"
35 #include "test_info_new.h"
36 #include "test_lib.h"
37 #include "remotetest.h"
38
39 #include <vector>
40 #include <string>
41
42 using namespace std;
43
44 #if defined(cap_launchmon)
45 #include "lmon_api/lmon_be.h"
46
47 void init_lmon(int *argc, char ***argv)
48 {
49    lmon_rc_e rc;
50    rc = LMON_be_init(LMON_VERSION, argc, argv);
51
52    LMON_be_finalize();
53 }
54
55 #else
56 void init_lmon(int *argc, char ***argv)
57 {
58 }
59 #endif
60 int main(int argc, char *argv[])
61 {
62    ParameterDict params;
63    vector<RunGroup *> groups;
64
65    static volatile int spin = 0;
66    /*fprintf(stderr, "testdriver_be running as %d\n", getpid());
67    while (!spin)
68    {
69       sleep(1);
70       }*/
71    
72    init_lmon(&argc, &argv);
73
74    parseArgs(argc, argv, params);
75    getGroupList(groups, params);
76
77    int port = params["port"]->getInt();
78    string hostname = params["hostname"]->getString();
79
80    if (port == 0 || !hostname.length()) {
81       fprintf(stderr, "[%s:%u] - No connection info.  port = %d, hostname = %s\n",
82               __FILE__, __LINE__, port, hostname.c_str());
83       return -1;
84    }
85
86    Connection connection(hostname, port);
87    if (connection.hasError()) {
88       fprintf(stderr, "[%s:%u] - Error connecting to FE\n",
89               __FILE__, __LINE__);
90       return -1;
91    }
92    
93    RemoteOutputDriver remote_output(&connection);
94    setOutput(&remote_output);
95
96    RemoteBE remotebe(groups, &connection);
97    for (;;) {
98       char *buffer = NULL;
99       bool result = connection.recv_message(buffer);
100       if (!result) {
101          //FE hangup.
102          return 0;
103       }
104       remotebe.dispatch(buffer);
105    }
106 }