jsonUT.cc 4.8 KB
Newer Older
dengyihao's avatar
dengyihao 已提交
1 2 3 4 5 6 7
#include <gtest/gtest.h>
#include <algorithm>
#include <iostream>
#include <string>
#include <thread>
#include <vector>
#include "index.h"
dengyihao's avatar
dengyihao 已提交
8 9 10 11
#include "indexCache.h"
#include "indexFst.h"
#include "indexFstCountingWriter.h"
#include "indexFstUtil.h"
dengyihao's avatar
dengyihao 已提交
12
#include "indexInt.h"
dengyihao's avatar
dengyihao 已提交
13 14
#include "indexTfile.h"
#include "indexUtil.h"
dengyihao's avatar
dengyihao 已提交
15 16 17 18 19 20 21 22 23
#include "tglobal.h"
#include "tskiplist.h"
#include "tutil.h"

static std::string dir = "/tmp/json";
class JsonEnv : public ::testing::Test {
 protected:
  virtual void SetUp() {
    taosRemoveDir(dir.c_str());
dengyihao's avatar
add UT  
dengyihao 已提交
24
    taosMkDir(dir.c_str());
dengyihao's avatar
add UT  
dengyihao 已提交
25
    printf("set up\n");
dengyihao's avatar
dengyihao 已提交
26 27 28 29 30 31 32
    opts = indexOptsCreate();
    int ret = tIndexJsonOpen(opts, dir.c_str(), &index);
    assert(ret == 0);
  }
  virtual void TearDown() {
    tIndexJsonClose(index);
    indexOptsDestroy(opts);
dengyihao's avatar
add UT  
dengyihao 已提交
33
    printf("destory\n");
dengyihao's avatar
dengyihao 已提交
34 35 36 37 38 39 40
  }
  SIndexJsonOpts* opts;
  SIndexJson*     index;
};

TEST_F(JsonEnv, testWrite) {
  {
dengyihao's avatar
add UT  
dengyihao 已提交
41
    std::string colName("test");
dengyihao's avatar
dengyihao 已提交
42
    std::string colVal("ab");
dengyihao's avatar
dengyihao 已提交
43
    SIndexTerm* term = indexTermCreate(1, ADD_VALUE, 0, TSDB_DATA_TYPE_BINARY, colName.c_str(), colName.size(),
dengyihao's avatar
dengyihao 已提交
44 45 46 47 48 49 50 51 52 53 54 55
                                       colVal.c_str(), colVal.size());

    SIndexMultiTerm* terms = indexMultiTermCreate();
    indexMultiTermAdd(terms, term);
    for (size_t i = 0; i < 100; i++) {
      tIndexJsonPut(index, terms, i);
    }
    indexMultiTermDestroy(terms);
  }
  {
    std::string colName("voltage");
    std::string colVal("ab1");
dengyihao's avatar
dengyihao 已提交
56
    SIndexTerm* term = indexTermCreate(1, ADD_VALUE, 0, TSDB_DATA_TYPE_BINARY, colName.c_str(), colName.size(),
dengyihao's avatar
dengyihao 已提交
57 58 59 60 61 62 63 64 65 66 67 68
                                       colVal.c_str(), colVal.size());

    SIndexMultiTerm* terms = indexMultiTermCreate();
    indexMultiTermAdd(terms, term);
    for (size_t i = 0; i < 100; i++) {
      tIndexJsonPut(index, terms, i);
    }
    indexMultiTermDestroy(terms);
  }
  {
    std::string colName("voltage");
    std::string colVal("123");
dengyihao's avatar
dengyihao 已提交
69
    SIndexTerm* term = indexTermCreate(1, ADD_VALUE, 0, TSDB_DATA_TYPE_BINARY, colName.c_str(), colName.size(),
dengyihao's avatar
dengyihao 已提交
70 71 72 73 74 75 76 77 78 79
                                       colVal.c_str(), colVal.size());

    SIndexMultiTerm* terms = indexMultiTermCreate();
    indexMultiTermAdd(terms, term);
    for (size_t i = 0; i < 100; i++) {
      tIndexJsonPut(index, terms, i);
    }
    indexMultiTermDestroy(terms);
  }
  {
dengyihao's avatar
add UT  
dengyihao 已提交
80
    std::string colName("test");
dengyihao's avatar
dengyihao 已提交
81 82 83
    std::string colVal("ab");

    SIndexMultiTermQuery* mq = indexMultiTermQueryCreate(MUST);
dengyihao's avatar
dengyihao 已提交
84
    SIndexTerm*           q = indexTermCreate(1, ADD_VALUE, 0, TSDB_DATA_TYPE_BINARY, colName.c_str(), colName.size(),
dengyihao's avatar
dengyihao 已提交
85 86 87 88 89 90 91 92
                                    colVal.c_str(), colVal.size());

    SArray* result = taosArrayInit(1, sizeof(uint64_t));
    indexMultiTermQueryAdd(mq, q, QUERY_TERM);
    tIndexJsonSearch(index, mq, result);
    assert(100 == taosArrayGetSize(result));
    indexMultiTermQueryDestroy(mq);
  }
dengyihao's avatar
add UT  
dengyihao 已提交
93 94
}
TEST_F(JsonEnv, testWriteMillonData) {
dengyihao's avatar
add UT  
dengyihao 已提交
95 96 97
  {
    std::string colName("test");
    std::string colVal("ab");
dengyihao's avatar
dengyihao 已提交
98
    SIndexTerm* term = indexTermCreate(1, ADD_VALUE, 0, TSDB_DATA_TYPE_BINARY, colName.c_str(), colName.size(),
dengyihao's avatar
add UT  
dengyihao 已提交
99 100 101 102 103 104 105 106 107
                                       colVal.c_str(), colVal.size());

    SIndexMultiTerm* terms = indexMultiTermCreate();
    indexMultiTermAdd(terms, term);
    for (size_t i = 0; i < 100; i++) {
      tIndexJsonPut(index, terms, i);
    }
    indexMultiTermDestroy(terms);
  }
dengyihao's avatar
add UT  
dengyihao 已提交
108 109
  {
    std::string colName("voltagefdadfa");
dengyihao's avatar
dengyihao 已提交
110
    std::string colVal("abxxxxxxxxxxxx");
wafwerar's avatar
wafwerar 已提交
111
    for (int i = 0; i < 1000; i++) {
dengyihao's avatar
dengyihao 已提交
112
      colVal[i % colVal.size()] = '0' + i % 128;
dengyihao's avatar
dengyihao 已提交
113
      SIndexTerm* term = indexTermCreate(1, ADD_VALUE, 0, TSDB_DATA_TYPE_BINARY, colName.c_str(), colName.size(),
dengyihao's avatar
dengyihao 已提交
114 115 116 117 118 119 120 121 122 123 124 125
                                         colVal.c_str(), colVal.size());

      SIndexMultiTerm* terms = indexMultiTermCreate();
      indexMultiTermAdd(terms, term);
      for (size_t i = 0; i < 1000; i++) {
        tIndexJsonPut(index, terms, i);
      }
      indexMultiTermDestroy(terms);
    }
  }
  {
    std::string colName("voltagefdadfa");
dengyihao's avatar
add UT  
dengyihao 已提交
126
    std::string colVal("abxxxxxxxxxxxx");
dengyihao's avatar
dengyihao 已提交
127
    SIndexTerm* term = indexTermCreate(1, ADD_VALUE, 0, TSDB_DATA_TYPE_BINARY, colName.c_str(), colName.size(),
dengyihao's avatar
add UT  
dengyihao 已提交
128
                                       colVal.c_str(), colVal.size());
dengyihao's avatar
dengyihao 已提交
129

dengyihao's avatar
add UT  
dengyihao 已提交
130 131 132 133 134 135 136 137
    SIndexMultiTerm* terms = indexMultiTermCreate();
    indexMultiTermAdd(terms, term);
    for (size_t i = 0; i < 1000000; i++) {
      tIndexJsonPut(index, terms, i);
    }
    indexMultiTermDestroy(terms);
  }
  {
dengyihao's avatar
add UT  
dengyihao 已提交
138
    std::string colName("test");
dengyihao's avatar
add UT  
dengyihao 已提交
139 140 141
    std::string colVal("ab");

    SIndexMultiTermQuery* mq = indexMultiTermQueryCreate(MUST);
dengyihao's avatar
dengyihao 已提交
142
    SIndexTerm*           q = indexTermCreate(1, ADD_VALUE, 0, TSDB_DATA_TYPE_BINARY, colName.c_str(), colName.size(),
dengyihao's avatar
add UT  
dengyihao 已提交
143 144 145 146 147 148 149 150
                                    colVal.c_str(), colVal.size());

    SArray* result = taosArrayInit(1, sizeof(uint64_t));
    indexMultiTermQueryAdd(mq, q, QUERY_TERM);
    tIndexJsonSearch(index, mq, result);
    assert(100 == taosArrayGetSize(result));
    indexMultiTermQueryDestroy(mq);
  }
dengyihao's avatar
dengyihao 已提交
151
}