/** * Run new CompareWorkspaces algorithm as a child algorithm. * * Result string formatted the same way as before; "Success!" when workspaces * match or a newline separated list of mismatch messages. * * @param group_compare Should output be formatted like group comparison? * @return A string containing either successString() or mismatch messages */ std::string CheckWorkspacesMatch::runCompareWorkspaces(bool group_compare) { // This algorithm produces a single result string std::string result; // Use new CompareWorkspaces algorithm to perform comparison Algorithm_sptr compare = this->createChildAlgorithm("CompareWorkspaces"); compare->setRethrows(true); compare->setLogging(false); // Forward workspace properties Workspace_sptr ws1 = getProperty("Workspace1"); Workspace_sptr ws2 = getProperty("Workspace2"); compare->setProperty("Workspace1", ws1); compare->setProperty("Workspace2", ws2); // Copy any other non-default properties const std::vector<Property *> &allProps = this->getProperties(); auto propCount = allProps.size(); for (size_t i = 0; i < propCount; ++i) { Property *prop = allProps[i]; const std::string &pname = prop->name(); if (!prop->isDefault() && pname != "Workspace1" && pname != "Workspace2" && pname != "Result") compare->setPropertyValue(pname, prop->value()); } // Execute comparison compare->execute(); // Generate result string if (!compare->getProperty("Result")) { ITableWorkspace_sptr table = compare->getProperty("Messages"); auto rowcount = table->rowCount(); for (size_t i = 0; i < rowcount; ++i) { result += table->cell<std::string>(i, 0); // Emulate special case output format when comparing groups if (group_compare && table->cell<std::string>(i, 0) != "Type mismatch. One workspace is a group, the other is not." && table->cell<std::string>(i, 0) != "GroupWorkspaces size mismatch.") { result += ". Inputs=[" + table->cell<std::string>(i, 1) + "," + table->cell<std::string>(i, 2) + "]"; } if (i < (rowcount - 1)) result += "\n"; } } else { result = successString(); } return result; }
void CheckWorkspacesMatch::exec() { result.clear(); this->doComparison(); if ( result != "") { g_log.notice() << "The workspaces did not match: " << result << std::endl; } else { result = successString(); } setProperty("Result",result); return; }
/** * Process two groups and ensure the Result string is set properly on the final * algorithm * * returns True if everything executed correctly */ bool CheckWorkspacesMatch::processGroups() { // Run new algorithm auto result = runCompareWorkspaces(true); // Output as per previous behaviour if (result != successString()) { g_log.notice() << result << "\n"; } setProperty("Result", result); setExecuted(true); notificationCenter().postNotification( new FinishedNotification(this, this->isExecuted())); return true; }
void CheckWorkspacesMatch::exec() { result.clear(); if (g_log.is(Logger::Priority::PRIO_DEBUG)) m_ParallelComparison = false; this->doComparison(); if (result != "") { g_log.notice() << "The workspaces did not match: " << result << std::endl; } else { result = successString(); } setProperty("Result", result); return; }
void dr_cb (RdKafka::Message &message) { if (message.err()) { state.producer.numErr++; errorString("producer_send_error", message.errstr(), message.topic_name(), message.key(), std::string(static_cast<const char*>(message.payload()), message.len())); } else { successString("producer_send_success", message.topic_name(), (int)message.partition(), message.offset(), message.key(), std::string(static_cast<const char*>(message.payload()), message.len())); state.producer.numAcked++; } }