@ -0,0 +1,30 @@ | |||
LDLIBS=-lstdc++ -lpEpAdapter | |||
LDFLAGS=-L../../src/ | |||
CXXFLAGS=-std=c++11 -g | |||
CXXFLAGS+=-I./src | |||
TEST_EXTRA_OBJS=../framework/utils.o | |||
# Src | |||
SRC=$(wildcard src/*.cc) | |||
OBJ=$(subst .cc,.o,$(SRC)) | |||
# Tests | |||
TEST_SRC=$(wildcard test/*.cc) | |||
TEST_OBJ=$(subst .cc,,$(TEST_SRC)) | |||
.PHONY: all clean rmtestdata | |||
.DEFAULT_GOAL := all | |||
all: $(TEST_OBJ) | |||
$(TEST_OBJ): $(OBJ) $(TEST_EXTRA_OBJS) | |||
clean: | |||
rm -f $(OBJ) | |||
rm -f $(TEST_OBJ) | |||
rm -rf src/*.dSYM | |||
rm -rf test/*.dSYM | |||
@ -0,0 +1,80 @@ | |||
#include "fw_dist_test.hh" | |||
#include "../../../src/std_utils.hh" | |||
#include "../../framework/utils.hh" | |||
#include <iostream> | |||
#include <unistd.h> | |||
#include <stdlib.h> | |||
#include <sys/stat.h> | |||
using namespace std; | |||
namespace pEp { | |||
namespace Test { | |||
string dummy; | |||
DistTest::DistTest() : mode(TestMode::ALICE) | |||
{ | |||
alice_home = data_dir + "/" + "alice/"; | |||
bob_home = data_dir + "/" + "bob/"; | |||
data_dir_recreate(); | |||
} | |||
void DistTest::run() | |||
{ | |||
if (mode == TestMode::ALICE) { | |||
alice_main(); | |||
} else if (mode == TestMode::ALICE_BOB) { | |||
pid_t pid; | |||
pid = fork(); | |||
if (pid == pid_t(0)) { | |||
cout << "Child PID:" << pid << endl; | |||
run_alice_main(); | |||
} else if (pid > pid_t(0)) { | |||
cout << "Parent PID:" << pid << endl; | |||
run_bob_main(); | |||
} else { | |||
cerr << "error forking" << endl; | |||
} | |||
} | |||
} | |||
void DistTest::run_alice_main() | |||
{ | |||
cout << "New process for Alice" << endl; | |||
setenv("HOME", alice_home.c_str(), 1); | |||
mkdir(alice_home.c_str(), 0770); | |||
cout << "HOME: " << getenv("HOME") << endl; | |||
alice_main(); | |||
} | |||
void DistTest::run_bob_main() | |||
{ | |||
cout << "New process for bob" << endl; | |||
setenv("HOME", bob_home.c_str(), 1); | |||
mkdir(bob_home.c_str(), 0770); | |||
cout << "HOME: " << getenv("HOME") << endl; | |||
bob_main(); | |||
} | |||
void DistTest::data_dir_delete() | |||
{ | |||
try { | |||
Utils::path_delete_all(data_dir); | |||
} catch (const exception& e) { | |||
TESTLOG("DistTest: - could not delete data dir: " + data_dir); | |||
} | |||
} | |||
void DistTest::data_dir_create() | |||
{ | |||
Utils::dir_create(data_dir); | |||
} | |||
void DistTest::data_dir_recreate() { | |||
data_dir_delete(); | |||
data_dir_create(); | |||
}; | |||
} // namespace Test | |||
} // namespace pEp |
@ -0,0 +1,43 @@ | |||
// This file is under GNU General Public License 3.0 | |||
// see LICENSE.txt | |||
#ifndef LIBPEPADAPTER_FW_DIST_TEST_HH | |||
#define LIBPEPADAPTER_FW_DIST_TEST_HH | |||
#include <string> | |||
#include <functional> | |||
namespace pEp { | |||
namespace Test { | |||
class DistTest { | |||
public: | |||
DistTest(); | |||
enum class TestMode | |||
{ | |||
ALICE, | |||
ALICE_BOB | |||
}; | |||
TestMode mode; | |||
std::string data_dir = "./data"; | |||
std::string alice_home; | |||
std::string bob_home; | |||
std::function<void(void)> alice_main{}; | |||
std::function<void(void)> bob_main{}; | |||
void run(); | |||
private: | |||
void run_alice_main(); | |||
void run_bob_main(); | |||
void data_dir_delete(); | |||
void data_dir_create(); | |||
void data_dir_recreate(); | |||
}; | |||
}; // namespace Test | |||
}; // namespace pEp | |||
#endif // LIBPEPADAPTER_FW_DIST_TEST_HH |
@ -0,0 +1,40 @@ | |||
#include "fw_dist_test.hh" | |||
#include "../../framework/utils.hh" | |||
#include <iostream> | |||
using namespace std; | |||
using namespace pEp; | |||
Test::DistTest test_fw; | |||
void alice_main() | |||
{ | |||
cout << "HYA FROM ALICE" << endl; | |||
while (true) { | |||
cout << "1" << endl; | |||
sleep_millis(1000); | |||
} | |||
} | |||
void bob_main() | |||
{ | |||
cout << "HYA FROM BOB" << endl; | |||
while (true) { | |||
cout << "2" << endl; | |||
sleep_millis(1000); | |||
} | |||
} | |||
int main(int argc, char* argv[]) | |||
{ | |||
test_fw.mode = Test::DistTest::TestMode::ALICE_BOB; | |||
test_fw.alice_main = &::alice_main; | |||
test_fw.bob_main = &::bob_main; | |||
test_fw.run(); | |||
cout << "HDUFGD" << endl; | |||
} |