A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
further snake_case s4u::Engine
[simgrid.git]
/
teshsuite
/
s4u
/
comm-pt2pt
/
comm-pt2pt.cpp
diff --git
a/teshsuite/s4u/comm-pt2pt/comm-pt2pt.cpp
b/teshsuite/s4u/comm-pt2pt/comm-pt2pt.cpp
index
0c9305d
..
ab82939
100644
(file)
--- a/
teshsuite/s4u/comm-pt2pt/comm-pt2pt.cpp
+++ b/
teshsuite/s4u/comm-pt2pt/comm-pt2pt.cpp
@@
-1,8
+1,15
@@
-/* Copyright (c) 2010-201
7
. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2010-201
8
. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
+/* We want this test to be exhaustive in term of:
+ * - communication involved (regular, asynchronous, detached, with a permanent receiver declared)
+ * - whether the send or the receive was posted first
+ *
+ * FIXME: Missing elements: timeouts, host/actor failures, link failures
+ */
+
#include "simgrid/s4u.hpp"
#include <cstring>
#include "simgrid/s4u.hpp"
#include <cstring>
@@
-32,136
+39,138
@@
static void usage(const char* binaryName, const char* defaultSend, const char* d
" j irecv on permanent mailbox (after a little delay)\n"
" J irecv on permanent mailbox (after a little delay)\n"
"\n"
" j irecv on permanent mailbox (after a little delay)\n"
" J irecv on permanent mailbox (after a little delay)\n"
"\n"
- "Example 1: %s examples/platforms/cluster.xml r
ipd rrrr # testing fancy
functions\n"
- "Default specs: %s %s (all possible pair
)
",
+ "Example 1: %s examples/platforms/cluster.xml r
RiIdD rrrrrr # testing all send
functions\n"
+ "Default specs: %s %s (all possible pair
s)\n
",
binaryName, binaryName, defaultSend, defaultRecv);
exit(1);
}
binaryName, binaryName, defaultSend, defaultRecv);
exit(1);
}
-static void
receiv
er(std::vector<std::string> args)
+static void
send
er(std::vector<std::string> args)
{
{
- XBT_INFO("
Receiv
er spec: %s", args[0].c_str());
- for (unsigned int test =
0; test <
args[0].size(); test++) {
- this_actor::sleep_until(test * 5);
-
char* mboxName = bprintf("Test #%u", test
);
- simgrid::s4u::MailboxPtr mbox = simgrid::s4u::Mailbox::byName(mboxName);
+ XBT_INFO("
Send
er spec: %s", args[0].c_str());
+ for (unsigned int test =
1; test <=
args[0].size(); test++) {
+ this_actor::sleep_until(test * 5
- 5
);
+
std::string* mboxName = new std::string("Test #" + std::to_string(test)
);
+ simgrid::s4u::MailboxPtr mbox = simgrid::s4u::Mailbox::byName(mboxName
->c_str()
);
- switch (args[0][test]) {
+ switch (args[0][test
- 1
]) {
case 'r':
case 'r':
- XBT_INFO("Test %
d
: r (regular send)", test);
-
simgrid::s4u::this_actor::send(mbox,
(void*)mboxName, 42.0);
+ XBT_INFO("Test %
u
: r (regular send)", test);
+
mbox->put(
(void*)mboxName, 42.0);
break;
case 'R':
break;
case 'R':
- XBT_INFO("Test %
d
: R (sleep + regular send)", test);
+ XBT_INFO("Test %
u
: R (sleep + regular send)", test);
simgrid::s4u::this_actor::sleep_for(0.5);
simgrid::s4u::this_actor::sleep_for(0.5);
-
simgrid::s4u::this_actor::send(mbox,
(void*)mboxName, 42.0);
+
mbox->put(
(void*)mboxName, 42.0);
break;
case 'i':
break;
case 'i':
- XBT_INFO("Test %
d
: i (asynchronous isend)", test);
-
simgrid::s4u::this_actor::isend(mbox,
(void*)mboxName, 42.0)->wait();
+ XBT_INFO("Test %
u
: i (asynchronous isend)", test);
+
mbox->put_async(
(void*)mboxName, 42.0)->wait();
break;
case 'I':
break;
case 'I':
- XBT_INFO("Test %
d
: I (sleep + isend)", test);
+ XBT_INFO("Test %
u
: I (sleep + isend)", test);
simgrid::s4u::this_actor::sleep_for(0.5);
simgrid::s4u::this_actor::sleep_for(0.5);
-
simgrid::s4u::this_actor::isend(mbox,
(void*)mboxName, 42.0)->wait();
+
mbox->put_async(
(void*)mboxName, 42.0)->wait();
break;
case 'd':
break;
case 'd':
- XBT_INFO("Test %
d
: d (detached send)", test);
-
simgrid::s4u::this_actor::dsend(mbox, (void*)mboxName, 42.0
);
+ XBT_INFO("Test %
u
: d (detached send)", test);
+
mbox->put_init((void*)mboxName, 42.0)->detach(
);
break;
case 'D':
break;
case 'D':
- XBT_INFO("Test %
d
: D (sleep + detached send)", test);
+ XBT_INFO("Test %
u
: D (sleep + detached send)", test);
simgrid::s4u::this_actor::sleep_for(0.5);
simgrid::s4u::this_actor::sleep_for(0.5);
-
simgrid::s4u::this_actor::dsend(mbox, (void*)mboxName, 42.0
);
+
mbox->put_init((void*)mboxName, 42.0)->detach(
);
break;
default:
break;
default:
- xbt_die("Unknown sender spec for test %
d: '%c'", test, args[0][test
]);
+ xbt_die("Unknown sender spec for test %
u: '%c'", test, args[0][test - 1
]);
}
}
- XBT_INFO("Test %
d
OK", test);
+ XBT_INFO("Test %
u
OK", test);
}
}
+ simgrid::s4u::this_actor::sleep_for(0.5);
+ // FIXME: we should test what happens when the process ends before the end of remote comm instead of hiding it
}
}
-static void
send
er(std::vector<std::string> args)
+static void
receiv
er(std::vector<std::string> args)
{
{
- XBT_INFO("
Send
er spec: %s", args[0].c_str());
- for (unsigned int test =
0; test <
args[0].size(); test++) {
- this_actor::sleep_until(test * 5);
-
char* mboxName = bprintf("Test #%u",
test);
- simgrid::s4u::MailboxPtr mbox = simgrid::s4u::Mailbox::byName(mboxName);
+ XBT_INFO("
Receiv
er spec: %s", args[0].c_str());
+ for (unsigned int test =
1; test <=
args[0].size(); test++) {
+ this_actor::sleep_until(test * 5
- 5
);
+
std::string mboxName = "Test #" + std::to_string(
test);
+ simgrid::s4u::MailboxPtr mbox = simgrid::s4u::Mailbox::byName(mboxName
.c_str()
);
void* received = nullptr;
void* received = nullptr;
- switch (args[0][test]) {
+ switch (args[0][test
- 1
]) {
case 'r':
case 'r':
- XBT_INFO("Test %
d
: r (regular receive)", test);
- received =
simgrid::s4u::this_actor::recv(mbox
);
+ XBT_INFO("Test %
u
: r (regular receive)", test);
+ received =
mbox->get(
);
break;
case 'R':
break;
case 'R':
- XBT_INFO("Test %
d
: R (sleep + regular receive)", test);
+ XBT_INFO("Test %
u
: R (sleep + regular receive)", test);
simgrid::s4u::this_actor::sleep_for(0.5);
simgrid::s4u::this_actor::sleep_for(0.5);
- received =
simgrid::s4u::this_actor::recv(mbox
);
+ received =
mbox->get(
);
break;
case 'i':
break;
case 'i':
- XBT_INFO("Test %
d
: i (asynchronous irecv)", test);
-
simgrid::s4u::this_actor::irecv(mbox,
&received)->wait();
+ XBT_INFO("Test %
u
: i (asynchronous irecv)", test);
+
mbox->get_async(
&received)->wait();
break;
case 'I':
break;
case 'I':
- XBT_INFO("Test %
d
: I (sleep + asynchronous irecv)", test);
+ XBT_INFO("Test %
u
: I (sleep + asynchronous irecv)", test);
simgrid::s4u::this_actor::sleep_for(0.5);
simgrid::s4u::this_actor::sleep_for(0.5);
-
simgrid::s4u::this_actor::irecv(mbox,
&received)->wait();
+
mbox->get_async(
&received)->wait();
break;
case 'p':
break;
case 'p':
- XBT_INFO("Test %
d
: p (regular receive on permanent mailbox)", test);
+ XBT_INFO("Test %
u
: p (regular receive on permanent mailbox)", test);
mbox->setReceiver(Actor::self());
mbox->setReceiver(Actor::self());
- received =
simgrid::s4u::this_actor::recv(mbox
);
+ received =
mbox->get(
);
break;
case 'P':
break;
case 'P':
- XBT_INFO("Test %
d
: P (sleep + regular receive on permanent mailbox)", test);
+ XBT_INFO("Test %
u
: P (sleep + regular receive on permanent mailbox)", test);
simgrid::s4u::this_actor::sleep_for(0.5);
mbox->setReceiver(Actor::self());
simgrid::s4u::this_actor::sleep_for(0.5);
mbox->setReceiver(Actor::self());
- received =
simgrid::s4u::this_actor::recv(mbox
);
+ received =
mbox->get(
);
break;
case 'j':
break;
case 'j':
- XBT_INFO("Test %
d
: j (irecv on permanent mailbox)", test);
+ XBT_INFO("Test %
u
: j (irecv on permanent mailbox)", test);
mbox->setReceiver(Actor::self());
mbox->setReceiver(Actor::self());
-
simgrid::s4u::this_actor::irecv(mbox,
&received)->wait();
+
mbox->get_async(
&received)->wait();
break;
case 'J':
break;
case 'J':
- XBT_INFO("Test %
d
: J (sleep + irecv on permanent mailbox)", test);
+ XBT_INFO("Test %
u
: J (sleep + irecv on permanent mailbox)", test);
simgrid::s4u::this_actor::sleep_for(0.5);
mbox->setReceiver(Actor::self());
simgrid::s4u::this_actor::sleep_for(0.5);
mbox->setReceiver(Actor::self());
-
simgrid::s4u::this_actor::irecv(mbox,
&received)->wait();
+
mbox->get_async(
&received)->wait();
break;
default:
break;
default:
- xbt_die("Unknown receiver spec for test %
d: '%c'", test, args[0][test
]);
+ xbt_die("Unknown receiver spec for test %
u: '%c'", test, args[0][test - 1
]);
}
}
-
- xbt_assert(strcmp(static_cast<char*>(received), mboxName) == 0);
- xbt_free(received);
- xbt_free(mboxName);
- XBT_INFO("Test %d OK", test);
+ std::string* receivedStr = static_cast<std::string*>(received);
+ xbt_assert(*receivedStr == mboxName);
+ delete receivedStr;
+ XBT_INFO("Test %u OK", test);
}
}
+ simgrid::s4u::this_actor::sleep_for(0.5);
}
int main(int argc, char* argv[])
{
std::string specSend;
std::string specRecv;
}
int main(int argc, char* argv[])
{
std::string specSend;
std::string specRecv;
- for (char s : {'r', 'R', 'i', 'I', '
p', 'P', 'j', 'J
'})
- for (char r : {'r', 'R', 'i', 'I', '
d', 'D
'}) {
+ for (char s : {'r', 'R', 'i', 'I', '
d', 'D
'})
+ for (char r : {'r', 'R', 'i', 'I', '
p', 'P', 'j', 'J
'}) {
specSend += s;
specRecv += r;
}
std::vector<std::string> argSend{specSend.c_str()};
std::vector<std::string> argRecv{specRecv.c_str()};
specSend += s;
specRecv += r;
}
std::vector<std::string> argSend{specSend.c_str()};
std::vector<std::string> argRecv{specRecv.c_str()};
- simgrid::s4u::Engine
* e = new simgrid::s4u::Engin
e(&argc, argv);
+ simgrid::s4u::Engine
e(&argc, argv);
if (argc < 2)
usage(argv[0], specSend.c_str(), specRecv.c_str());
if (argc < 2)
usage(argv[0], specSend.c_str(), specRecv.c_str());
- e
->loadP
latform(argv[1]);
+ e
.load_p
latform(argv[1]);
if (argc >= 3) {
argSend.clear();
if (argc >= 3) {
argSend.clear();
@@
-173,13
+182,13
@@
int main(int argc, char* argv[])
}
xbt_assert(argSend.front().size() == argRecv.front().size(), "Sender and receiver spec must be of the same size");
}
xbt_assert(argSend.front().size() == argRecv.front().size(), "Sender and receiver spec must be of the same size");
- s
imgrid::s4u::Host** hosts = sg_host_list
();
- simgrid::s4u::Actor::createActor("sender", hosts[0], sender, argSend);
- simgrid::s4u::Actor::create
Actor("recver", hosts[1], receiver, argRecv
);
-
xbt_free(hosts
);
+ s
td::vector<simgrid::s4u::Host*> hosts = e.get_all_hosts
();
+
+ simgrid::s4u::Actor::create
("sender", hosts[0], sender, argSend
);
+
simgrid::s4u::Actor::create("recver", hosts[1], receiver, argRecv
);
- e
->
run();
- XBT_INFO("Simulation time %g", e
->
getClock());
+ e
.
run();
+ XBT_INFO("Simulation time %g", e
.
getClock());
return 0;
}
return 0;
}