mirror of
https://github.com/apple/foundationdb.git
synced 2025-05-15 18:32:18 +08:00
Pretty-print topology when starting simulation
This commit is contained in:
parent
0739c736a1
commit
0ba99c8e83
@ -3,7 +3,7 @@ add_library(jemalloc INTERFACE)
|
|||||||
set(USE_JEMALLOC ON)
|
set(USE_JEMALLOC ON)
|
||||||
# We don't want to use jemalloc on Windows
|
# We don't want to use jemalloc on Windows
|
||||||
# Nor on FreeBSD, where jemalloc is the default system allocator
|
# Nor on FreeBSD, where jemalloc is the default system allocator
|
||||||
if(USE_SANITIZER OR WIN32 OR (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD"))
|
if(USE_SANITIZER OR WIN32 OR (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") OR APPLE)
|
||||||
set(USE_JEMALLOC OFF)
|
set(USE_JEMALLOC OFF)
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
@ -363,6 +363,59 @@ TestWorkload* getWorkloadIface(WorkloadRequest work, Reference<AsyncVar<ServerDB
|
|||||||
return compound;
|
return compound;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void printSimulatedTopology() {
|
||||||
|
if (!g_network->isSimulated()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
auto processes = g_simulator.getAllProcesses();
|
||||||
|
std::sort(processes.begin(), processes.end(), [](ISimulator::ProcessInfo* lhs, ISimulator::ProcessInfo* rhs) {
|
||||||
|
auto l = lhs->locality;
|
||||||
|
auto r = rhs->locality;
|
||||||
|
if (l.dcId() != r.dcId()) {
|
||||||
|
return l.dcId() < r.dcId();
|
||||||
|
}
|
||||||
|
if (l.dataHallId() != r.dataHallId()) {
|
||||||
|
return l.dataHallId() < r.dataHallId();
|
||||||
|
}
|
||||||
|
if (l.zoneId() != r.zoneId()) {
|
||||||
|
return l.zoneId() < r.zoneId();
|
||||||
|
}
|
||||||
|
if (l.machineId() != r.zoneId()) {
|
||||||
|
return l.machineId() < r.machineId();
|
||||||
|
}
|
||||||
|
return lhs->address < rhs->address;
|
||||||
|
});
|
||||||
|
printf("Simulated Cluster Topology:\n");
|
||||||
|
printf("===========================\n");
|
||||||
|
Optional<Standalone<StringRef>> dcId, dataHallId, zoneId, machineId;
|
||||||
|
for (auto p : processes) {
|
||||||
|
std::string indent = "";
|
||||||
|
if (dcId != p->locality.dcId()) {
|
||||||
|
dcId = p->locality.dcId();
|
||||||
|
printf("%sdcId: %s\n", indent.c_str(), p->locality.describeDcId().c_str());
|
||||||
|
}
|
||||||
|
indent += " ";
|
||||||
|
if (dataHallId != p->locality.dataHallId()) {
|
||||||
|
dataHallId = p->locality.dataHallId();
|
||||||
|
printf("%sdataHallId: %s\n", indent.c_str(), p->locality.describeDataHall().c_str());
|
||||||
|
}
|
||||||
|
indent += " ";
|
||||||
|
if (zoneId != p->locality.zoneId()) {
|
||||||
|
zoneId = p->locality.zoneId();
|
||||||
|
printf("%szoneId: %s\n", indent.c_str(), p->locality.describeZone().c_str());
|
||||||
|
}
|
||||||
|
indent += " ";
|
||||||
|
if (machineId != p->locality.machineId()) {
|
||||||
|
machineId = p->locality.machineId();
|
||||||
|
printf("%smachineId: %s\n", indent.c_str(), p->locality.describeMachineId().c_str());
|
||||||
|
}
|
||||||
|
indent += " ";
|
||||||
|
printf("%sAddress: %s\n", indent.c_str(), p->address.toString().c_str(), p->name);
|
||||||
|
printf("%sClass: %s\n", indent.c_str(), p->startingClass.toString().c_str());
|
||||||
|
printf("%sName: %s\n", indent.c_str(), p->name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ACTOR Future<Void> databaseWarmer(Database cx) {
|
ACTOR Future<Void> databaseWarmer(Database cx) {
|
||||||
loop {
|
loop {
|
||||||
state Transaction tr(cx);
|
state Transaction tr(cx);
|
||||||
@ -1346,6 +1399,7 @@ ACTOR Future<Void> runTests(Reference<AsyncVar<Optional<struct ClusterController
|
|||||||
|
|
||||||
// Change the configuration (and/or create the database) if necessary
|
// Change the configuration (and/or create the database) if necessary
|
||||||
printf("startingConfiguration:%s start\n", startingConfiguration.toString().c_str());
|
printf("startingConfiguration:%s start\n", startingConfiguration.toString().c_str());
|
||||||
|
printSimulatedTopology();
|
||||||
if (useDB && startingConfiguration != StringRef()) {
|
if (useDB && startingConfiguration != StringRef()) {
|
||||||
try {
|
try {
|
||||||
wait(timeoutError(changeConfiguration(cx, testers, startingConfiguration), 2000.0));
|
wait(timeoutError(changeConfiguration(cx, testers, startingConfiguration), 2000.0));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user