tasktable_test.cpp 3.2 KB
Newer Older
W
wxyu 已提交
1
#include "scheduler/TaskTable.h"
W
wxyu 已提交
2
#include "scheduler/task/TestTask.h"
W
wxyu 已提交
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
#include <gtest/gtest.h>


using namespace zilliz::milvus::engine;

class TaskTableItemTest : public ::testing::Test {
protected:
    void
    SetUp() override {
        item1_.id = 0;
        item1_.state = TaskTableItemState::MOVED;
        item1_.priority = 10;
    }

    TaskTableItem default_;
    TaskTableItem item1_;
};

TEST_F(TaskTableItemTest, construct) {
    ASSERT_EQ(default_.id, 0);
    ASSERT_EQ(default_.state, TaskTableItemState::INVALID);
    ASSERT_EQ(default_.priority, 0);
}

TEST_F(TaskTableItemTest, copy) {
    TaskTableItem another(item1_);
    ASSERT_EQ(another.id, item1_.id);
    ASSERT_EQ(another.state, item1_.state);
    ASSERT_EQ(another.priority, item1_.priority);
}

TEST_F(TaskTableItemTest, destruct) {
    auto p_item = new TaskTableItem();
    delete p_item;
}


/************ TaskTableBaseTest ************/

class TaskTableBaseTest : public ::testing::Test {
protected:
    void
    SetUp() override {
        invalid_task_ = nullptr;
W
wxyu 已提交
47 48
        task1_ = std::make_shared<TestTask>();
        task2_ = std::make_shared<TestTask>();
W
wxyu 已提交
49 50 51 52 53 54 55 56 57 58 59
    }

    TaskPtr invalid_task_;
    TaskPtr task1_;
    TaskPtr task2_;
    TaskTable empty_table_;
};


TEST_F(TaskTableBaseTest, put_task) {
    empty_table_.Put(task1_);
W
wxyu 已提交
60
    ASSERT_EQ(empty_table_.Get(0)->task, task1_);
W
wxyu 已提交
61 62 63 64
}

TEST_F(TaskTableBaseTest, put_invalid_test) {
    empty_table_.Put(invalid_task_);
W
wxyu 已提交
65
    ASSERT_EQ(empty_table_.Get(0)->task, invalid_task_);
W
wxyu 已提交
66 67 68 69 70
}

TEST_F(TaskTableBaseTest, put_batch) {
    std::vector<TaskPtr> tasks{task1_, task2_};
    empty_table_.Put(tasks);
W
wxyu 已提交
71 72
    ASSERT_EQ(empty_table_.Get(0)->task, task1_);
    ASSERT_EQ(empty_table_.Get(1)->task, task2_);
W
wxyu 已提交
73 74 75 76 77 78 79 80 81 82 83 84 85 86
}

TEST_F(TaskTableBaseTest, put_empty_batch) {
    std::vector<TaskPtr> tasks{};
    empty_table_.Put(tasks);
}

/************ TaskTableAdvanceTest ************/

class TaskTableAdvanceTest : public ::testing::Test {
protected:
    void
    SetUp() override {
        for (uint64_t i = 0; i < 8; ++i) {
W
wxyu 已提交
87
            auto task = std::make_shared<TestTask>();
W
wxyu 已提交
88 89 90
            table1_.Put(task);
        }

W
wxyu 已提交
91 92 93 94 95 96 97 98
        table1_.Get(0)->state = TaskTableItemState::INVALID;
        table1_.Get(1)->state = TaskTableItemState::START;
        table1_.Get(2)->state = TaskTableItemState::LOADING;
        table1_.Get(3)->state = TaskTableItemState::LOADED;
        table1_.Get(4)->state = TaskTableItemState::EXECUTING;
        table1_.Get(5)->state = TaskTableItemState::EXECUTED;
        table1_.Get(6)->state = TaskTableItemState::MOVING;
        table1_.Get(7)->state = TaskTableItemState::MOVED;
W
wxyu 已提交
99 100 101 102 103 104 105 106 107
    }

    TaskTable table1_;
};

TEST_F(TaskTableAdvanceTest, load) {
    table1_.Load(1);
    table1_.Loaded(2);

W
wxyu 已提交
108 109
    ASSERT_EQ(table1_.Get(1)->state, TaskTableItemState::LOADING);
    ASSERT_EQ(table1_.Get(2)->state, TaskTableItemState::LOADED);
W
wxyu 已提交
110 111 112 113 114 115
}

TEST_F(TaskTableAdvanceTest, execute) {
    table1_.Execute(3);
    table1_.Executed(4);

W
wxyu 已提交
116 117
    ASSERT_EQ(table1_.Get(3)->state, TaskTableItemState::EXECUTING);
    ASSERT_EQ(table1_.Get(4)->state, TaskTableItemState::EXECUTED);
W
wxyu 已提交
118 119 120 121 122 123
}

TEST_F(TaskTableAdvanceTest, move) {
    table1_.Move(3);
    table1_.Moved(6);

W
wxyu 已提交
124 125
    ASSERT_EQ(table1_.Get(3)->state, TaskTableItemState::MOVING);
    ASSERT_EQ(table1_.Get(6)->state, TaskTableItemState::MOVED);
W
wxyu 已提交
126
}