* Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.
* MindIE is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
#include <gtest/gtest.h>
#define private public
#include "block_tracker.h"
#undef private
namespace mindie_llm {
class SeqsBlocksComputedTrackerTest : public ::testing::Test {
private:
size_t blockSize_;
public:
void SetUp() override
{
blockSize_ = 2;
tracker_ = std::make_shared<SeqsBlocksComputedTracker>(nullptr, blockSize_, true, 16);
}
void TearDown() override { tracker_.reset(); }
std::shared_ptr<SeqsBlocksComputedTracker> tracker_;
};
class SeqsLastAccessBlocksTrackerTest : public ::testing::Test {
public:
void SetUp() override { seqsLasttracker_ = std::make_shared<SeqsLastAccessBlocksTracker>(nullptr); }
std::shared_ptr<SeqsLastAccessBlocksTracker> seqsLasttracker_;
};
TEST_F(SeqsLastAccessBlocksTrackerTest, AddSeqTest)
{
seqsLasttracker_->AddSeq(0);
EXPECT_EQ(seqsLasttracker_->seqIdToLastAccessTime_[0], -1);
EXPECT_THROW(seqsLasttracker_->AddSeq(0), std::runtime_error);
seqsLasttracker_->RemoveSeq(0);
EXPECT_THROW(seqsLasttracker_->RemoveSeq(0), std::runtime_error);
}
TEST_F(SeqsLastAccessBlocksTrackerTest, UpdateSeqLastAccessTest)
{
const TimeStamp timeStamp = 100.0f;
seqsLasttracker_->AddSeq(1);
seqsLasttracker_->UpdateSeqLastAccess(1, timeStamp);
EXPECT_EQ(seqsLasttracker_->seqIdToLastAccessTime_[1], timeStamp);
seqsLasttracker_->RemoveSeq(1);
EXPECT_EQ(seqsLasttracker_->seqIdToLastAccessTime_.size(), 0);
EXPECT_THROW(seqsLasttracker_->UpdateSeqLastAccess(1, timeStamp), std::runtime_error);
}
}