Skip to content

Commit 0a2cb2c

Browse files
committed
Add VirtualObjectIdManager tests
1 parent 16fff7f commit 0a2cb2c

File tree

2 files changed

+99
-1
lines changed

2 files changed

+99
-1
lines changed

lib/VirtualObjectIdManager.cpp

-1
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,6 @@ void VirtualObjectIdManager::releaseSwitchIndex(
192192
SWSS_LOG_DEBUG("released switch index 0x%x", index);
193193
}
194194

195-
196195
sai_object_id_t VirtualObjectIdManager::allocateNewObjectId(
197196
_In_ sai_object_type_t objectType,
198197
_In_ sai_object_id_t switchId)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
#include "VirtualObjectIdManager.h"
2+
3+
#include "meta/NumberOidIndexGenerator.h"
4+
5+
#include "swss/logger.h"
6+
7+
#include <gtest/gtest.h>
8+
9+
#include <memory>
10+
11+
using namespace sairedis;
12+
using namespace saimeta;
13+
14+
static auto createVirtualObjectIdManager()
15+
{
16+
SWSS_LOG_ENTER();
17+
18+
auto sc = std::make_shared<SwitchConfig>();
19+
20+
sc->m_switchIndex = 0;
21+
sc->m_hardwareInfo = "";
22+
23+
auto scc = std::make_shared<SwitchConfigContainer>();
24+
25+
scc->insert(sc);
26+
27+
return std::make_shared<VirtualObjectIdManager>(0, scc, std::make_shared<NumberOidIndexGenerator>());
28+
}
29+
30+
TEST(VirtualObjectIdManager, ctr)
31+
{
32+
EXPECT_THROW(std::make_shared<VirtualObjectIdManager>(1000, nullptr, nullptr), std::runtime_error);
33+
34+
auto m = createVirtualObjectIdManager();
35+
}
36+
37+
TEST(VirtualObjectIdManager, saiSwitchIdQuery)
38+
{
39+
auto m = createVirtualObjectIdManager();
40+
41+
EXPECT_EQ(m->saiSwitchIdQuery(SAI_NULL_OBJECT_ID), SAI_NULL_OBJECT_ID);
42+
43+
EXPECT_THROW(m->saiSwitchIdQuery(1), std::runtime_error);
44+
}
45+
46+
TEST(VirtualObjectIdManager, clear)
47+
{
48+
auto m = createVirtualObjectIdManager();
49+
50+
m->clear();
51+
}
52+
53+
TEST(VirtualObjectIdManager, allocateNewSwitchObjectId)
54+
{
55+
auto m = createVirtualObjectIdManager();
56+
57+
m->allocateNewSwitchObjectId("");
58+
59+
// currently is allowed to allocate same switch index twice
60+
61+
EXPECT_NE(m->allocateNewSwitchObjectId(""), SAI_NULL_OBJECT_ID);
62+
63+
EXPECT_EQ(m->allocateNewSwitchObjectId("foo"), SAI_NULL_OBJECT_ID);
64+
}
65+
66+
TEST(VirtualObjectIdManager, releaseObjectId)
67+
{
68+
auto m = createVirtualObjectIdManager();
69+
70+
auto sid = m->allocateNewSwitchObjectId("");
71+
72+
EXPECT_NE(sid, SAI_NULL_OBJECT_ID);
73+
74+
m->releaseObjectId(sid);
75+
76+
EXPECT_THROW(m->releaseObjectId(sid), std::runtime_error);
77+
}
78+
79+
TEST(VirtualObjectIdManager, updateObjectIndex)
80+
{
81+
EXPECT_THROW(VirtualObjectIdManager::updateObjectIndex(SAI_NULL_OBJECT_ID, 1), std::runtime_error);
82+
83+
EXPECT_THROW(VirtualObjectIdManager::updateObjectIndex(1, 0x10000000000), std::runtime_error);
84+
85+
EXPECT_THROW(VirtualObjectIdManager::updateObjectIndex(1, 1), std::runtime_error);
86+
}
87+
88+
TEST(VirtualObjectIdManager, allocateNewObjectId)
89+
{
90+
auto m = createVirtualObjectIdManager();
91+
92+
EXPECT_THROW(m->allocateNewObjectId(SAI_OBJECT_TYPE_NULL, SAI_NULL_OBJECT_ID), std::runtime_error);
93+
94+
auto sid = m->allocateNewSwitchObjectId("");
95+
96+
EXPECT_THROW(m->allocateNewObjectId(SAI_OBJECT_TYPE_SWITCH, sid), std::runtime_error);
97+
98+
EXPECT_THROW(m->allocateNewObjectId(SAI_OBJECT_TYPE_PORT, 1), std::runtime_error);
99+
}

0 commit comments

Comments
 (0)