Skip to content
Snippets Groups Projects
Unverified Commit 5fcdab79 authored by Kelvin Rodriguez's avatar Kelvin Rodriguez Committed by GitHub
Browse files

fix for getLatestKernels (#49)

* fixed getLatestKernels

* removed log
parent d3de2a88
No related branches found
No related tags found
No related merge requests found
...@@ -152,7 +152,7 @@ namespace SpiceQL { ...@@ -152,7 +152,7 @@ namespace SpiceQL {
m_required_kernels.load(lsk_json); m_required_kernels.load(lsk_json);
for (auto &[mission, kernels] : json_kernels.items()) { for (auto &[mission, kernels] : json_kernels.items()) {
fmt::print("mission: {}\n", mission); SPDLOG_TRACE("MISSION: {}", mission);
json sclk_json = getLatestKernels(config[mission].getRecursive("sclk")); json sclk_json = getLatestKernels(config[mission].getRecursive("sclk"));
SPDLOG_TRACE("{} SCLKs: {}", mission, sclk_json.dump(4)); SPDLOG_TRACE("{} SCLKs: {}", mission, sclk_json.dump(4));
......
...@@ -70,6 +70,14 @@ namespace SpiceQL { ...@@ -70,6 +70,14 @@ namespace SpiceQL {
} }
} }
// Comparator function for kernel paths
bool fileNameComp(string a, string b) {
string fna = static_cast<fs::path>(a).filename();
string fnb = static_cast<fs::path>(b).filename();
int comp = fna.compare(fnb);
SPDLOG_TRACE("Comparing {} and {}: {}", fna, fnb, comp);
return comp < 0;
}
vector<string> getLatestKernel(vector<string> kernels) { vector<string> getLatestKernel(vector<string> kernels) {
if(kernels.empty()) { if(kernels.empty()) {
...@@ -88,17 +96,25 @@ namespace SpiceQL { ...@@ -88,17 +96,25 @@ namespace SpiceQL {
} }
bool foundList = false; bool foundList = false;
for (int i = 0; i < files.size(); i++) { for (int i = 0; i < files.size(); i++) {
const fs::path &firstVecElem = files[i][0]; const fs::path &firstVecElem = files[i][0];
string fileName = firstVecElem.filename(); string fileName = firstVecElem.filename();
string kernelName = k.filename(); string kernelName = k.filename();
SPDLOG_TRACE("filename: {}", fileName);
SPDLOG_TRACE("kernel name: {}", kernelName);
int findRes = fileName.find_first_of("0123456789"); int findRes = fileName.find_first_of("0123456789");
if (findRes != string::npos) { if (findRes != string::npos) {
fileName = fileName.erase(findRes); fileName = fileName.erase(findRes);
} }
findRes = kernelName.find_first_of("0123456789"); findRes = kernelName.find_first_of("0123456789");
if (findRes != string::npos) { if (findRes != string::npos) {
kernelName = kernelName.erase(findRes); kernelName = kernelName.erase(findRes);
} }
SPDLOG_TRACE("Truncated filename: {}", fileName);
SPDLOG_TRACE("Truncated kernel name: {}", kernelName);
if (fileName == kernelName) { if (fileName == kernelName) {
files[i].push_back(k); files[i].push_back(k);
foundList = true; foundList = true;
...@@ -112,7 +128,7 @@ namespace SpiceQL { ...@@ -112,7 +128,7 @@ namespace SpiceQL {
vector<string> outKernels = {}; vector<string> outKernels = {};
for (auto kernelList : files) { for (auto kernelList : files) {
outKernels.push_back(*(max_element(kernelList.begin(), kernelList.end()))); outKernels.push_back(*(max_element(kernelList.begin(), kernelList.end(), fileNameComp)));
} }
return outKernels; return outKernels;
...@@ -120,11 +136,13 @@ namespace SpiceQL { ...@@ -120,11 +136,13 @@ namespace SpiceQL {
json getLatestKernels(json kernels) { json getLatestKernels(json kernels) {
SPDLOG_TRACE("Looking for kernels to get Latest: {}", kernels.dump(2));
vector<json::json_pointer> kptrs = findKeyInJson(kernels, "kernels", true); vector<json::json_pointer> kptrs = findKeyInJson(kernels, "kernels", true);
vector<vector<string>> lastest; vector<vector<string>> lastest;
for (json::json_pointer &ptr : kptrs) { for (json::json_pointer &ptr : kptrs) {
SPDLOG_TRACE("Getting Latest Kernels from: {}", ptr.to_string());
SPDLOG_TRACE("JSON: {}", kernels[ptr]);
vector<vector<string>> kvect = json2DArrayTo2DVector(kernels[ptr]); vector<vector<string>> kvect = json2DArrayTo2DVector(kernels[ptr]);
vector<vector<string>> newLatest; vector<vector<string>> newLatest;
......
...@@ -27,6 +27,27 @@ TEST(QueryTests, UnitTestGetLatestKernel) { ...@@ -27,6 +27,27 @@ TEST(QueryTests, UnitTestGetLatestKernel) {
EXPECT_EQ(getLatestKernel(kernels)[0], "test/iak.0004.ti"); EXPECT_EQ(getLatestKernel(kernels)[0], "test/iak.0004.ti");
} }
TEST(QueryTests, UnitTestGetLatestKernelDuplicateFileNames) {
vector<string> kernels = {
"/base/kernels/spk/mar080.bsp",
"/base/kernels/spk/mar097.bsp",
"/mro/kernels/spk/mar063.bsp",
"/odyssey/kernels/spk/mar063.bsp",
"/tgo/kernels/spk/mar085.bsp",
"/tgo/kernels/spk/mar097.bsp",
"/tgo/kernels/tspk/mar085.bsp",
"/tgo/kernels/tspk/mar097.bsp",
"/viking1/kernels/spk/mar033.bsp",
"/viking2/kernels/spk/mar033.bsp",
"/base/kernels/spk/mar097.bsp"
};
// which one doesn't matter, as long as we get mar097.bsp
EXPECT_EQ(static_cast<fs::path>(getLatestKernel(kernels)[0]).filename(), "mar097.bsp");
}
TEST(QueryTests, getKernelStringValue){ TEST(QueryTests, getKernelStringValue){
unique_ptr<Kernel> k(new Kernel("data/msgr_mdis_v010.ti")); unique_ptr<Kernel> k(new Kernel("data/msgr_mdis_v010.ti"));
// INS-236810_CCD_CENTER = ( 511.5, 511.5 ) // INS-236810_CCD_CENTER = ( 511.5, 511.5 )
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment