From 9054d4b8f8846a078ee2d98b9284ad8d94d87f1f Mon Sep 17 00:00:00 2001 From: Snafkin547 <62607343+Snafkin547@users.noreply.github.com> Date: Wed, 18 Sep 2024 11:14:46 -0400 Subject: [PATCH] Refactor (#13) * header coonversion merged * header coonversion merged for p2 * removed js1_re_stringify process * missing ; * merged unnecessary decoding from encoded * Reorganized sequence of operations on header * Reorganized sequence of operations on header * Noted encoding takes max 8 chrs --- src/tests/c_api/test_join_sail.cpp | 70 ++++++++++++------------------ 1 file changed, 28 insertions(+), 42 deletions(-) diff --git a/src/tests/c_api/test_join_sail.cpp b/src/tests/c_api/test_join_sail.cpp index 665ef8a..9687e4f 100644 --- a/src/tests/c_api/test_join_sail.cpp +++ b/src/tests/c_api/test_join_sail.cpp @@ -55,6 +55,7 @@ void upload_to_s3(int rank, json output_json, const std::string& filename){ } } +// TODO: Max 8 chars-string unsigned long long encodeStrToInt(const std::string& str){ unsigned long long result = 0; for (char c : str){ @@ -112,12 +113,6 @@ int main(int argc, char** argv) { std::ifstream is1(csv_file); ojson js1_orig = csv::decode_csv(is1,options); - // Enumerate Headers - ojson js1_header_json = js1_orig[0]; - for (size_t i = 0; i < js1_header_json.size(); i++) { - js1_header_json[i] = encodeStrToInt(js1_header_json[i].as()); - } - // Organize body ojson js1 = ojson::array(); for (size_t i = 1; i < js1_orig.size(); i++) { @@ -234,22 +229,21 @@ int main(int argc, char** argv) { // JSON object to hold the results jsoncons::json output_json = jsoncons::json::array(); - - // Send P1's header to P2 - std::vector js1_header_toSend; - for (int i = 0; i(); - js1_header_toSend.push_back(curr_header); - } - MPI_Send(js1_header_toSend.data(), js1_header_toSend.size(), MPI_LONG_LONG, 1, HEADER_TAG, MPI_COMM_WORLD); - // Decode own header to string - std::vector js1_header; - for(size_t i = 0; i js1_header_toSend; // Placeholder to send header to P2 + std::vector js1_header; // Vectorize from json + for (size_t i = 0; i < js1_header_json.size(); i++) { + std::string curr_header = js1_header_json[i].as(); + long long decoded = encodeStrToInt(js1_header_json[i].as()); + js1_header_toSend.push_back(decoded); + js1_header.push_back(curr_header); } - + + // Send header to P2 + MPI_Send(js1_header_toSend.data(), js1_header_toSend.size(), MPI_LONG_LONG, 1, HEADER_TAG, MPI_COMM_WORLD); + // Receive P2's header and convert to string std::vector js2_header_toReceive(COLS2); MPI_Recv(js2_header_toReceive.data(), COLS2, MPI_LONG_LONG, 1, HEADER_TAG, MPI_COMM_WORLD, MPI_STATUS_IGNORE); @@ -304,12 +298,6 @@ int main(int argc, char** argv) { std::ifstream is2(csv_file); ojson js2_orig = csv::decode_csv(is2,options); - // Enumerate Headers - ojson js2_header_json = js2_orig[0]; - for (int i = 0; i < js2_header_json.size(); i++) { - js2_header_json[i] = encodeStrToInt(js2_header_json[i].as()); - } - // Organize body ojson js2 = ojson::array(); for (int i = 1; i < js2_orig.size(); i++) { @@ -429,6 +417,19 @@ int main(int argc, char** argv) { std::cout << "/// Joined Table ///" << std::endl; jsoncons::json output_json = jsoncons::json::array(); + // Enumerate Headers + ojson js2_header_json = js2_orig[0]; + std::vector js2_header; // Vectorize own header from json + std::vector js2_header_toSend; // Placeholder to send header to P1 + std::cout << "["; + for (int i = 0; i < js2_header_json.size(); i++) { + std::string curr_header = js2_header_json[i].as(); + long long decoded = encodeStrToInt(js2_header_json[i].as()); + js2_header_toSend.push_back(decoded); + js2_header.push_back(curr_header); + std::cout << curr_header << ", "; + } + // Receive P1's header and convert to string std::vector js1_header_toReceive(COLS1); MPI_Recv(js1_header_toReceive.data(), COLS1, MPI_LONG_LONG, 0, HEADER_TAG, MPI_COMM_WORLD, MPI_STATUS_IGNORE); @@ -439,23 +440,8 @@ int main(int argc, char** argv) { js1_header.push_back(currHeader); } - // Send P2's header to P1 - std::vector js2_header_toSend; - for (int i = 0; i(); - js2_header_toSend.push_back(curr_header); - } + // Send header to P1 MPI_Send(js2_header_toSend.data(), js2_header_toSend.size(), MPI_LONG_LONG, 0, HEADER_TAG, MPI_COMM_WORLD); - - // Decode own header to string - std::cout << "["; - std::vector js2_header; - for(size_t i = 0; i