summaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/stackdumpiterator
diff options
context:
space:
mode:
Diffstat (limited to 'searchlib/src/tests/stackdumpiterator')
-rw-r--r--searchlib/src/tests/stackdumpiterator/.gitignore7
-rw-r--r--searchlib/src/tests/stackdumpiterator/CMakeLists.txt8
-rw-r--r--searchlib/src/tests/stackdumpiterator/stackdumpiteratortest.cpp329
-rw-r--r--searchlib/src/tests/stackdumpiterator/stackdumpiteratortest.h16
4 files changed, 0 insertions, 360 deletions
diff --git a/searchlib/src/tests/stackdumpiterator/.gitignore b/searchlib/src/tests/stackdumpiterator/.gitignore
deleted file mode 100644
index 6f8239c6cc1..00000000000
--- a/searchlib/src/tests/stackdumpiterator/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-*.core
-.depend
-Makefile
-core
-core.*
-stackdumpiteratortest
-searchlib_stackdumpiteratortest_app
diff --git a/searchlib/src/tests/stackdumpiterator/CMakeLists.txt b/searchlib/src/tests/stackdumpiterator/CMakeLists.txt
deleted file mode 100644
index 124373406f5..00000000000
--- a/searchlib/src/tests/stackdumpiterator/CMakeLists.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-vespa_add_executable(searchlib_stackdumpiteratortest_app TEST
- SOURCES
- stackdumpiteratortest.cpp
- DEPENDS
- searchlib
-)
-vespa_add_test(NAME searchlib_stackdumpiteratortest_app COMMAND searchlib_stackdumpiteratortest_app - *1000)
diff --git a/searchlib/src/tests/stackdumpiterator/stackdumpiteratortest.cpp b/searchlib/src/tests/stackdumpiterator/stackdumpiteratortest.cpp
deleted file mode 100644
index 479ec67813d..00000000000
--- a/searchlib/src/tests/stackdumpiterator/stackdumpiteratortest.cpp
+++ /dev/null
@@ -1,329 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include "stackdumpiteratortest.h"
-#include <vespa/searchlib/parsequery/simplequerystack.h>
-#include <vespa/searchlib/parsequery/stackdumpiterator.h>
-#include <vespa/fastos/time.h>
-
-#define NUMTESTS 6
-
-int
-StackDumpIteratorTest::Main()
-{
- int doTest[NUMTESTS];
- int low, high, accnum, num;
- int indicator;
- bool verify = false;
- int multiplier = 1;
- bool failed = false;
-
- if (_argc == 1) {
- Usage(_argv[0]);
- return 1;
- }
-
- // default initialize to not run any tests.
- for (int n = 0; n < NUMTESTS; n++)
- doTest[n] = 0;
-
- // parse the command line arguments
- for (int i = 1; i < _argc; i++) {
- low = 0;
- high = NUMTESTS - 1;
- char *p = _argv[i];
-
- // Check if a multiplier is specified
- if (*p == '*') {
- p++;
- accnum = 0;
- while (*p != '\0') {
- num = *p - '0';
- accnum = accnum * 10 + num;
- p++;
- }
- multiplier = accnum;
- continue;
- }
-
- // Default is to run the tests specified, unless the first char is '/'
- indicator = 1;
- if (*p == '/') {
- p++;
- indicator = 0;
- }
-
- // Find the first number
- accnum = 0;
- while (*p != '-' && *p != '\0') {
- num = *p - '0';
- accnum = accnum * 10 + num;
- p++;
- }
- if (accnum >= NUMTESTS)
- continue;
- low = accnum;
- // Check for range operator
- if (*p == '-') {
- p++;
- // Find the second number
- accnum = 0;
- while (*p != '\0') {
- num = *p - '0';
- accnum = accnum * 10 + num;
- p++;
- }
- if (accnum > 0)
- high = accnum < NUMTESTS ? accnum : NUMTESTS-1;
- } else
- high = low;
-
- // Indicate the runrequest for the desired range.
- for (int j = low; j <= high; j++)
- doTest[j] = indicator;
- }
-
- // Remove unused tests.
- // doTest[1] = 0;
-
- // Remember time
- if (multiplier > 1) {
- printf("Running all tests %d times.\n", multiplier);
- verify = false;
- } else {
- verify = true;
- }
-
- int testCnt = 0;
-
- FastOS_Time timer;
- timer.SetNow();
-
- // Actually run the tests that we wanted.
- for (int j = 0; j < multiplier; j++)
- for (int k = 0; k < NUMTESTS; k++)
- if (doTest[k] == 1) {
- if (!RunTest(k, verify))
- failed = true;
- testCnt++;
- }
-
- // Print time taken
- double timeTaken = timer.MilliSecsToNow();
-
- printf("Time taken : %f ms\n", timeTaken);
- printf("Number of tests run: %d\n", testCnt);
- double avgTestPrMSec = static_cast<double>(testCnt) / timeTaken;
- printf("Tests pr Sec: %f\n", avgTestPrMSec * 1000.0);
-
- return failed ? 1 : 0;
-}
-
-#define ITERATOR_NOERROR 0x0
-#define ITERATOR_ERROR_WRONG_NUM 0x1
-#define ITERATOR_ERROR_WRONG_TYPE 0x2
-#define ITERATOR_ERROR_WRONG_ARITY 0x4
-#define ITERATOR_ERROR_WRONG_INDEX 0x10
-#define ITERATOR_ERROR_WRONG_TERM 0x20
-#define ITERATOR_ERROR_WRONG_GETINDEX 0x40
-#define ITERATOR_ERROR_WRONG_GETTERM 0x80
-#define ITERATOR_ERROR_WRONG_SIZE 0x100
-
-bool
-StackDumpIteratorTest::ShowResult(int testNo,
- search::SimpleQueryStackDumpIterator &actual,
- search::SimpleQueryStack &correct,
- unsigned int expected)
-{
- if (expected == ITERATOR_NOERROR) {
- vespalib::string query = search::SimpleQueryStack::StackbufToString(actual.getStack());
- printf("query = %s\n", query.c_str());
- }
- unsigned int results = 0;
-
- int num = 0;
-
- search::ParseItem *item;
-
- printf("%03d: ", testNo);
-
- while (actual.next()) {
- vespalib::stringref idx = actual.getIndexName();
- vespalib::stringref term = actual.getTerm();
-
-#if 0
- printf("StackItem #%d: %d %d '%.*s:%.*s'\n",
- actual.getNum(),
- actual.getType(),
- actual.getArity(),
- idx.size(), idx.c_str(),
- term.size(), term.c_str());
-#endif
-
- item = correct.Pop();
-
- if (num++ != actual.getNum()) {
- results |= ITERATOR_ERROR_WRONG_NUM;
- delete item;
- break;
- }
- if (item->Type() != actual.getType()) {
- results |= ITERATOR_ERROR_WRONG_TYPE;
- delete item;
- break;
- }
- if (item->_arity != actual.getArity()) {
- results |= ITERATOR_ERROR_WRONG_ARITY;
- delete item;
- break;
- }
- if (strncmp(item->_indexName.c_str(), idx.data(), idx.size()) != 0) {
- results |= ITERATOR_ERROR_WRONG_INDEX;
- delete item;
- break;
- }
- if (strncmp(item->_term.c_str(), term.data(), term.size()) != 0) {
- results |= ITERATOR_ERROR_WRONG_TERM;
- delete item;
- break;
- }
-
- delete item;
- }
- if (correct.GetSize() != 0) results |= ITERATOR_ERROR_WRONG_SIZE;
-
- if (results == expected)
- printf("ok\n");
- else
- printf("fail. exp: %x, result: %x\n", expected, results);
-
- return results == expected;
-}
-
-/**
- *
- * @param testno The test to run.
- * @param verify Verify the result of the test.
- */
-bool
-StackDumpIteratorTest::RunTest(int testno, bool verify)
-{
- search::SimpleQueryStack stack;
- search::RawBuf buf(32768);
-
- switch (testno) {
- case 0:
- {
- // Simple term query
- stack.Push(new search::ParseItem(search::ParseItem::ITEM_TERM, "foobar"));
-
- stack.AppendBuffer(&buf);
- search::SimpleQueryStackDumpIterator si(vespalib::stringref(buf.GetDrainPos(), buf.GetUsedLen()));
-
- if (verify)
- return ShowResult(testno, si, stack, ITERATOR_NOERROR);
- break;
- }
-
- case 1:
- {
- // multi term query
- stack.Push(new search::ParseItem(search::ParseItem::ITEM_TERM, "foo", "foobar"));
- stack.Push(new search::ParseItem(search::ParseItem::ITEM_TERM, "foo", "xyzzy"));
- stack.Push(new search::ParseItem(search::ParseItem::ITEM_TERM, "bar", "baz"));
- stack.Push(new search::ParseItem(search::ParseItem::ITEM_OR, 2));
- stack.Push(new search::ParseItem(search::ParseItem::ITEM_AND, 2));
-
- stack.AppendBuffer(&buf);
- search::SimpleQueryStackDumpIterator si(vespalib::stringref(buf.GetDrainPos(), buf.GetUsedLen()));
-
- if (verify)
- return ShowResult(testno, si, stack, ITERATOR_NOERROR);
- break;
- }
-
- case 2:
- {
- // all stack items
- stack.Push(new search::ParseItem(search::ParseItem::ITEM_TERM, "foo", "foobar"));
- stack.Push(new search::ParseItem(search::ParseItem::ITEM_NUMTERM, "foo", "[0;22]"));
- stack.Push(new search::ParseItem(search::ParseItem::ITEM_PREFIXTERM, "bar", "baz"));
- stack.Push(new search::ParseItem(search::ParseItem::ITEM_PHRASE, 3, "bar"));
- stack.Push(new search::ParseItem(search::ParseItem::ITEM_SAME_ELEMENT, 3, "bar"));
- stack.Push(new search::ParseItem(search::ParseItem::ITEM_OR, 2));
- stack.Push(new search::ParseItem(search::ParseItem::ITEM_AND, 3));
- stack.Push(new search::ParseItem(search::ParseItem::ITEM_RANK, 5));
- stack.Push(new search::ParseItem(search::ParseItem::ITEM_NOT, 3));
-
- stack.AppendBuffer(&buf);
- search::SimpleQueryStackDumpIterator si(vespalib::stringref(buf.GetDrainPos(), buf.GetUsedLen()));
-
- if (verify)
- return ShowResult(testno, si, stack, ITERATOR_NOERROR);
- break;
- }
-
- case 3:
- {
- // malicous type in buffer
- stack.Push(new search::ParseItem(search::ParseItem::ITEM_TERM, "foo", "foobar"));
- stack.AppendBuffer(&buf);
- *buf.GetWritableDrainPos(0) = 0x1e;
- search::SimpleQueryStackDumpIterator si(vespalib::stringref(buf.GetDrainPos(), buf.GetUsedLen()));
- if (verify)
- return ShowResult(testno, si, stack, ITERATOR_ERROR_WRONG_SIZE);
- break;
- }
-
- case 4:
- {
- // malicous length in buffer
- stack.Push(new search::ParseItem(search::ParseItem::ITEM_TERM, "foo", "foobar"));
- stack.AppendBuffer(&buf);
- *buf.GetWritableDrainPos(1) = 0xba;
- search::SimpleQueryStackDumpIterator si(vespalib::stringref(buf.GetDrainPos(), buf.GetUsedLen()));
- if (verify)
- return ShowResult(testno, si, stack, ITERATOR_ERROR_WRONG_SIZE);
- break;
- }
-
- case 5: {
- stack.Push(new search::ParseItem(search::ParseItem::ITEM_TERM, "foo", "foobar"));
- stack.Push(new search::ParseItem(search::ParseItem::ITEM_TERM, "foo1", "foobar1"));
- stack.Push(new search::ParseItem(search::ParseItem::ITEM_TERM, "foo2", "foobar2"));
- stack.Push(new search::ParseItem(search::ParseItem::ITEM_WORD_ALTERNATIVES, 3, "wa"));
-
- stack.AppendBuffer(&buf);
- search::SimpleQueryStackDumpIterator si(vespalib::stringref(buf.GetDrainPos(), buf.GetUsedLen()));
-
- if (verify)
- return ShowResult(testno, si, stack, ITERATOR_NOERROR);
- break;
- }
-
-
- default:
- {
- printf("%03d: no such test\n", testno);
- }
- }
-
- return true;
-}
-
-void
-StackDumpIteratorTest::Usage(char *progname)
-{
- printf("%s {testnospec}+\n\
- Where testnospec is:\n\
- num: single test\n\
- num-num: inclusive range (open range permitted)\n",progname);
- printf("There are tests from %d to %d\n\n", 0, NUMTESTS-1);
-}
-
-int
-main(int argc, char** argv)
-{
- StackDumpIteratorTest tester;
- return tester.Entry(argc, argv);
-}
-
diff --git a/searchlib/src/tests/stackdumpiterator/stackdumpiteratortest.h b/searchlib/src/tests/stackdumpiterator/stackdumpiteratortest.h
deleted file mode 100644
index bca1dd45893..00000000000
--- a/searchlib/src/tests/stackdumpiterator/stackdumpiteratortest.h
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#pragma once
-
-#include <vespa/searchlib/parsequery/stackdumpiterator.h>
-#include <vespa/fastos/app.h>
-
-namespace search { class SimpleQueryStack; }
-
-class StackDumpIteratorTest : public FastOS_Application
-{
- int Main() override;
- void Usage(char *progname);
- bool ShowResult(int testNo, search::SimpleQueryStackDumpIterator &actual, search::SimpleQueryStack &correct, unsigned int expected);
- bool RunTest(int i, bool verify);
-};