Skip to content

Commit 16add72

Browse files
committed
UT for upgrade path files
1 parent 3f76576 commit 16add72

File tree

3 files changed

+154
-0
lines changed

3 files changed

+154
-0
lines changed
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package com.cloud.upgrade;
2+
3+
import static org.mockito.ArgumentMatchers.any;
4+
import static org.mockito.ArgumentMatchers.eq;
5+
import static org.mockito.ArgumentMatchers.isNull;
6+
import static org.mockito.Mockito.when;
7+
8+
import java.util.Collections;
9+
10+
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
11+
import org.apache.cloudstack.framework.config.dao.ConfigurationGroupDao;
12+
import org.apache.cloudstack.framework.config.dao.ConfigurationSubGroupDao;
13+
import org.apache.cloudstack.framework.config.impl.ConfigurationSubGroupVO;
14+
import org.apache.cloudstack.framework.config.impl.ConfigurationVO;
15+
import org.apache.logging.log4j.Logger;
16+
import org.junit.Assert;
17+
import org.junit.Test;
18+
import org.junit.runner.RunWith;
19+
import org.mockito.InjectMocks;
20+
import org.mockito.Mock;
21+
import org.mockito.Mockito;
22+
import org.mockito.junit.MockitoJUnitRunner;
23+
24+
import com.cloud.utils.db.SearchBuilder;
25+
import com.cloud.utils.db.SearchCriteria;
26+
27+
@RunWith(MockitoJUnitRunner.class)
28+
public class ConfigurationGroupsAggregatorTest {
29+
@InjectMocks
30+
private ConfigurationGroupsAggregator configurationGroupsAggregator = new ConfigurationGroupsAggregator();
31+
32+
@Mock
33+
private ConfigurationDao configDao;
34+
35+
@Mock
36+
private ConfigurationGroupDao configGroupDao;
37+
38+
@Mock
39+
private ConfigurationSubGroupDao configSubGroupDao;
40+
41+
@Mock
42+
private Logger logger;
43+
44+
@Test
45+
public void testUpdateConfigurationGroups() {
46+
ConfigurationVO config = new ConfigurationVO("Advanced", "DEFAULT", "management-server",
47+
"test.config.name", null, "description");
48+
config.setGroupId(1L);
49+
config.setSubGroupId(1L);
50+
51+
SearchBuilder<ConfigurationVO> sb = Mockito.mock(SearchBuilder.class);
52+
when(configDao.createSearchBuilder()).thenReturn(sb);
53+
Mockito.when(sb.select("name", SearchCriteria.Func.NATIVE, "test.config.name")).thenReturn(sb);
54+
Mockito.when(sb.select("groupId", SearchCriteria.Func.NATIVE, 1L)).thenReturn(sb);
55+
Mockito.when(sb.select("subGroupId", SearchCriteria.Func.NATIVE, 1L)).thenReturn(sb);
56+
Mockito.when(sb.entity()).thenReturn(config);
57+
when(configDao.searchIncludingRemoved(any(), isNull(), isNull(), eq(false))).thenReturn(Collections.singletonList(config));
58+
59+
ConfigurationSubGroupVO configSubGroup = Mockito.mock(ConfigurationSubGroupVO.class);
60+
when(configSubGroupDao.findByName("name")).thenReturn(configSubGroup);
61+
Mockito.when(configSubGroup.getId()).thenReturn(10L);
62+
Mockito.when(configSubGroup.getGroupId()).thenReturn(5L);
63+
64+
configurationGroupsAggregator.updateConfigurationGroups();
65+
66+
Assert.assertEquals(Long.valueOf(5), config.getGroupId());
67+
Assert.assertEquals(Long.valueOf(10), config.getSubGroupId());
68+
Mockito.verify(configDao, Mockito.times(1)).persist(config);
69+
Mockito.verify(logger, Mockito.times(1)).debug("Updating configuration groups");
70+
Mockito.verify(logger, Mockito.times(1)).debug("Successfully updated configuration groups.");
71+
}
72+
}

engine/schema/src/test/java/com/cloud/upgrade/dao/DatabaseAccessObjectTest.java

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -511,4 +511,57 @@ public void testDropColumnWhenexecuteUpdateResultsInException() throws Exception
511511
verify(loggerMock, times(1)).warn(anyString(), eq(sqlException));
512512
}
513513

514+
@Test
515+
public void testGetColumnType() throws Exception {
516+
when(connectionMock.prepareStatement(contains("DESCRIBE"))).thenReturn(preparedStatementMock);
517+
when(preparedStatementMock.executeQuery()).thenReturn(resultSetMock);
518+
when(resultSetMock.next()).thenReturn(true);
519+
when(resultSetMock.getString("Type")).thenReturn("type");
520+
521+
Connection conn = connectionMock;
522+
String tableName = "tableName";
523+
String columnName = "columnName";
524+
525+
Assert.assertEquals("type", dao.getColumnType(conn, tableName, columnName));
526+
527+
verify(connectionMock, times(1)).prepareStatement(anyString());
528+
verify(preparedStatementMock, times(1)).executeQuery();
529+
verify(preparedStatementMock, times(1)).close();
530+
verify(loggerMock, times(0)).debug(anyString());
531+
}
532+
533+
@Test
534+
public void testAddColumn() throws Exception {
535+
when(connectionMock.prepareStatement(contains("ADD COLUMN"))).thenReturn(preparedStatementMock);
536+
when(preparedStatementMock.executeUpdate()).thenReturn(1);
537+
538+
Connection conn = connectionMock;
539+
String tableName = "tableName";
540+
String columnName = "columnName";
541+
String columnType = "columnType";
542+
543+
dao.addColumn(conn, tableName, columnName, columnType);
544+
545+
verify(connectionMock, times(1)).prepareStatement(anyString());
546+
verify(preparedStatementMock, times(1)).executeUpdate();
547+
verify(preparedStatementMock, times(1)).close();
548+
}
549+
550+
@Test
551+
public void testChangeColumn() throws Exception {
552+
when(connectionMock.prepareStatement(contains("CHANGE COLUMN"))).thenReturn(preparedStatementMock);
553+
when(preparedStatementMock.executeUpdate()).thenReturn(1);
554+
555+
Connection conn = connectionMock;
556+
String tableName = "tableName";
557+
String columnName = "columnName";
558+
String newColumnName = "columnName2";
559+
String columnDefinition = "columnDefinition";
560+
561+
dao.changeColumn(conn, tableName, columnName, newColumnName, columnDefinition);
562+
563+
verify(connectionMock, times(1)).prepareStatement(anyString());
564+
verify(preparedStatementMock, times(1)).executeUpdate();
565+
verify(preparedStatementMock, times(1)).close();
566+
}
514567
}

engine/schema/src/test/java/com/cloud/upgrade/dao/DbUpgradeUtilsTest.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,4 +159,33 @@ public void testDropTableColumnsIfExistWhenThreeKeysAreSuppliedAnOneDoesnotExist
159159
verify(daoMock, times(1)).columnExists(conn, tableName, column3);
160160
verify(daoMock, times(1)).dropColumn(conn, tableName, column3);
161161
}
162+
163+
@Test
164+
public void testAddTableColumnIfNotExist() throws Exception {
165+
Connection conn = connectionMock;
166+
String tableName = "tableName";
167+
String columnName = "columnName";
168+
String columnDefinition = "columnDefinition";
169+
when(daoMock.columnExists(conn, tableName, columnName)).thenReturn(false);
170+
171+
DbUpgradeUtils.addTableColumnIfNotExist(conn, tableName, columnName, columnDefinition);
172+
173+
verify(daoMock, times(1)).columnExists(conn, tableName, columnName);
174+
verify(daoMock, times(1)).addColumn(conn, tableName, columnName, columnDefinition);
175+
}
176+
177+
@Test
178+
public void testChangeTableColumnIfNotExist() throws Exception {
179+
Connection conn = connectionMock;
180+
String tableName = "tableName";
181+
String oldColumnName = "oldColumnName";
182+
String newColumnName = "newColumnName";
183+
String columnDefinition = "columnDefinition";
184+
when(daoMock.columnExists(conn, tableName, oldColumnName)).thenReturn(true);
185+
186+
DbUpgradeUtils.changeTableColumnIfNotExist(conn, tableName, oldColumnName, newColumnName, columnDefinition);
187+
188+
verify(daoMock, times(1)).columnExists(conn, tableName, oldColumnName);
189+
verify(daoMock, times(1)).changeColumn(conn, tableName, oldColumnName, newColumnName, columnDefinition);
190+
}
162191
}

0 commit comments

Comments
 (0)