WIFI-1488: Configured NTP Server not used by AP

This commit is contained in:
Mike Hansen
2021-02-05 13:33:08 -05:00
parent 511f3c1253
commit 469c5fefb5
11 changed files with 394 additions and 11 deletions

View File

@@ -61,10 +61,10 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
@org.springframework.beans.factory.annotation.Value("${tip.wlan.preventClientCnAlteration:false}")
private boolean preventClientCnAlteration;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.defaultCommandDurationSec:3600}")
private long defaultCommandDurationSec;
@org.springframework.beans.factory.annotation.Value("${tip.wlan.defaultCommandDelaySec:60}")
private long defaultCommandDelaySec;
@@ -223,7 +223,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
OpensyncAPConfig opensyncAPConfig = extIntegrationInterface.getApConfig(apId);
if (opensyncAPConfig != null) {
ovsdbDao.configureNtpServer(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureWifiRadios(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig);
@@ -242,7 +242,6 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
}
ovsdbDao.updateEventReportingInterval(ovsdbClient, collectionIntervalSecEvent);
} else {
LOG.info("No Configuration available for {}", apId);
}
@@ -297,7 +296,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
extIntegrationInterface.clearEquipmentStatus(apId);
ovsdbDao.configureNtpServer(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureWifiRadios(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig);
ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig);
@@ -312,7 +311,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
ovsdbDao.configureStatsFromProfile(ovsdbClient, opensyncAPConfig);
if (ovsdbDao.getDeviceStatsReportingInterval(ovsdbClient) != collectionIntervalSecDeviceStats) {
ovsdbDao.updateDeviceStatsReportingInterval(ovsdbClient, collectionIntervalSecDeviceStats);
ovsdbDao.updateDeviceStatsReportingInterval(ovsdbClient, collectionIntervalSecDeviceStats);
}
ovsdbDao.updateEventReportingInterval(ovsdbClient, collectionIntervalSecEvent);
LOG.debug("Finished processConfigChanged for {}", apId);
@@ -350,17 +349,20 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
} catch (OvsdbClientException e) {
LOG.debug("Could not enable monitor for Wifi_Radio_State table. {}", e.getMessage());
}
try {
monitorWifiInetStateDbTable(ovsdbClient, key);
} catch (OvsdbClientException e) {
LOG.debug("Could not enable monitor for Wifi_Inet_State table. {}", e.getMessage());
}
try {
monitorWifiVifStateDbTable(ovsdbClient, key);
} catch (OvsdbClientException e) {
LOG.debug("Could not enable monitor for Wifi_VIF_State table. {}", e.getMessage());
}
try {
monitorWifiAssociatedClientsDbTable(ovsdbClient, key);
} catch (OvsdbClientException e) {
@@ -373,6 +375,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
LOG.debug("Could not enable monitor for AWLAN_Node table. {}", e.getMessage());
}
try {
monitorDhcpLeasedIpDbTable(ovsdbClient, key);
} catch (OvsdbClientException e) {
@@ -386,8 +389,13 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
LOG.debug("Could not enable monitor for Command_State table. {}", e.getMessage());
}
try {
monitorNodeStateTable(ovsdbClient,key);
} catch (OvsdbClientException e) {
LOG.debug("Could not enable monitor for Node_State table. {}", e.getMessage());
}
LOG.debug("Finished (re)setting monitors for AP {}", key);
}
private void monitorDhcpLeasedIpDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
@@ -764,6 +772,32 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
}
private void monitorNodeStateTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
CompletableFuture<TableUpdates> nsCf = ovsdbClient.monitor(
OvsdbDao.ovsdbName, OvsdbDao.nodeStateTable + "_" + key, new MonitorRequests(ImmutableMap
.of(OvsdbDao.nodeStateTable, new MonitorRequest(new MonitorSelect(true, true, true, true)))),
new MonitorCallback() {
@Override
public void update(TableUpdates tableUpdates) {
LOG.info(OvsdbDao.nodeStateTable + "_" + key + " monitor callback received {}");
tableUpdates.getTableUpdates().entrySet().stream().forEach(t -> {
LOG.info("TableUpdate for {}", t.getKey());
t.getValue().getRowUpdates().values().stream().forEach(r -> {
if (r.getOld() != null) {
LOG.info("Node_State old row {}", r.getOld().getColumns());
}
if (r.getNew() != null) {
LOG.info("Node_State new row {}", r.getNew().getColumns());
}
});
});
}
});
nsCf.join();
}
@Override
public String closeSession(String apId) {
OvsdbSession session = ovsdbSessionMapInterface.getSession(apId);

View File

@@ -44,6 +44,8 @@ public class OvsdbDao extends OvsdbDaoBase {
OvsdbFirmwareConfig ovsdbFirmware;
@Autowired
OvsdbCommandConfig ovsdbCommand;
@Autowired
OvsdbNodeConfig ovsdbNodeConfig;
public String changeRedirectorAddress(OvsdbClient ovsdbClient, String apId, String newRedirectorAddress) {
return ovsdbNode.changeRedirectorAddress(ovsdbClient, apId, newRedirectorAddress);
@@ -80,6 +82,10 @@ public class OvsdbDao extends OvsdbDaoBase {
public void configureInterfaces(OvsdbClient ovsdbClient) {
ovsdbNetwork.configureInterfaces(ovsdbClient);
}
public void configureNtpServer(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) {
ovsdbNodeConfig.configureNtpServer(ovsdbClient, opensyncAPConfig);
}
public void configureSsids(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) {
ovsdbSsid.configureSsids(ovsdbClient, opensyncAPConfig);

View File

@@ -57,6 +57,8 @@ public class OvsdbDaoBase {
public static final String wifiInetStateDbTable = "Wifi_Inet_State";
public static final String wifiAssociatedClientsDbTable = "Wifi_Associated_Clients";
public static final String wifiRrmConfigDbTable = "Wifi_RRM_Config";
public static final String nodeConfigTable = "Node_Config";
public static final String nodeStateTable = "Node_State";
public static final String dhcpLeasedIpDbTable = "DHCP_leased_IP";
public static final String commandConfigDbTable = "Command_Config";
public static final String commandStateDbTable = "Command_State";

View File

@@ -17,6 +17,7 @@ import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.CommandConfigInfo;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.Hotspot20Config;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.Hotspot20IconConfig;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.Hotspot20OsuProviders;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.NodeConfigInfo;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.WifiInetConfigInfo;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.WifiRadioConfigInfo;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.models.WifiStatsConfigInfo;
@@ -73,6 +74,11 @@ public class OvsdbGet extends OvsdbDaoBase {
return ret;
}
NodeConfigInfo getNodeConfigInfo(OvsdbClient ovsdbClient) {
return new NodeConfigInfo(getOvsdbTableRowsForCondition(ovsdbClient, nodeConfigTable,
List.of(new Condition("module", Function.EQUALS, new Atom<>("ntp")))).iterator().next());
}
Map<String, CommandConfigInfo> getProvisionedCommandConfigs(OvsdbClient ovsdbClient) {
Map<String, CommandConfigInfo> ret = new HashMap<>();
for (Row row : getOvsdbTableRowsForCondition(ovsdbClient, commandConfigDbTable, null)) {

View File

@@ -0,0 +1,53 @@
package com.telecominfraproject.wlan.opensync.ovsdb.dao;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig;
import com.telecominfraproject.wlan.profile.network.models.ApNetworkConfiguration;
import com.vmware.ovsdb.exception.OvsdbClientException;
import com.vmware.ovsdb.protocol.operation.Operation;
import com.vmware.ovsdb.protocol.operation.Update;
import com.vmware.ovsdb.protocol.operation.notation.Atom;
import com.vmware.ovsdb.protocol.operation.notation.Condition;
import com.vmware.ovsdb.protocol.operation.notation.Function;
import com.vmware.ovsdb.protocol.operation.notation.Row;
import com.vmware.ovsdb.protocol.operation.notation.Value;
import com.vmware.ovsdb.protocol.operation.result.OperationResult;
import com.vmware.ovsdb.service.OvsdbClient;
@Component
public class OvsdbNodeConfig extends OvsdbDaoBase {
@Autowired
OvsdbGet ovsdbGet;
public void configureNtpServer(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncAPConfig) {
try {
ApNetworkConfiguration apNetworkConfig = (ApNetworkConfiguration) opensyncAPConfig.getApProfile()
.getDetails();
LOG.debug("configureNtpServer update Node_Config to {}", apNetworkConfig.getNtpServer().getValue());
Map<String, Value> updateColumns = new HashMap<>();
updateColumns.put("value", new Atom<>(apNetworkConfig.getNtpServer().getValue()));
List<Operation> operations = new ArrayList<>();
operations.add(new Update(nodeConfigTable,
List.of(new Condition("module", Function.EQUALS, new Atom<>("ntp"))), new Row(updateColumns)));
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
for (OperationResult res : result) {
LOG.debug("configureNtpServer result {}", res);
}
} catch (OvsdbClientException | InterruptedException | ExecutionException | TimeoutException e) {
throw new RuntimeException(e);
}
}
}

View File

@@ -0,0 +1,68 @@
package com.telecominfraproject.wlan.opensync.ovsdb.dao.models;
import java.util.Objects;
import com.telecominfraproject.wlan.opensync.ovsdb.dao.OvsdbDaoBase;
import com.vmware.ovsdb.protocol.operation.notation.Row;
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
public class NodeConfigInfo implements Cloneable {
public Uuid uuid;
public String key;
public String value;
public Boolean persist;
public String module;
public NodeConfigInfo() {
}
public NodeConfigInfo(Row row) {
this.uuid = row.getUuidColumn("_uuid");
this.key = OvsdbDaoBase.getSingleValueFromSet(row, "key");
this.value = OvsdbDaoBase.getSingleValueFromSet(row, "value");
this.module = OvsdbDaoBase.getSingleValueFromSet(row, "module");
Boolean tmpPersist = OvsdbDaoBase.getSingleValueFromSet(row, "persist");
this.persist = tmpPersist == null ? false : tmpPersist;
}
@Override
public NodeConfigInfo clone() {
try {
NodeConfigInfo ret = (NodeConfigInfo) super.clone();
return ret;
} catch (CloneNotSupportedException e) {
throw new IllegalStateException("Cannot clone ", e);
}
}
@Override
public int hashCode() {
return Objects.hash(key, module, persist, uuid, value);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
NodeConfigInfo other = (NodeConfigInfo) obj;
return Objects.equals(key, other.key) && Objects.equals(module, other.module)
&& Objects.equals(persist, other.persist) && Objects.equals(uuid, other.uuid)
&& Objects.equals(value, other.value);
}
@Override
public String toString() {
return "NodeConfigInfo [" + (uuid != null ? "uuid=" + uuid + ", " : "")
+ (key != null ? "key=" + key + ", " : "") + (value != null ? "value=" + value + ", " : "")
+ (persist != null ? "persist=" + persist + ", " : "") + (module != null ? "module=" + module : "")
+ "]";
}
}

View File

@@ -67,6 +67,7 @@ import com.vmware.ovsdb.service.OvsdbClient;
@Import(value = { OvsdbDao.class, OvsdbDaoTest.Config.class, OvsdbNode.class, OvsdbRadioConfig.class,
OvsdbHotspotConfig.class, OvsdbCommandConfig.class, OvsdbMonitor.class, OvsdbFirmwareConfig.class,
OvsdbStatsConfig.class, OvsdbSsidConfig.class, OvsdbRrmConfig.class, OvsdbNetworkConfig.class,
OvsdbNodeConfig.class
})
public class OvsdbDaoTest {
@@ -124,7 +125,6 @@ public class OvsdbDaoTest {
@Autowired
OvsdbDao ovsdbDao;
@Autowired
OvsdbNode ovsdbNode;
@Autowired
@@ -145,6 +145,9 @@ public class OvsdbDaoTest {
OvsdbFirmwareConfig ovsdbFirmware;
@Autowired
OvsdbCommandConfig ovsdbCommand;
@Autowired
OvsdbNodeConfig ovsdbNodeConfig;
@MockBean(answer = Answers.RETURNS_MOCKS)
OvsdbGet ovsdbGet;

View File

@@ -0,0 +1,93 @@
package com.telecominfraproject.wlan.opensync.ovsdb.dao;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoSession;
import org.mockito.quality.Strictness;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig;
import com.telecominfraproject.wlan.profile.models.Profile;
import com.telecominfraproject.wlan.profile.models.ProfileType;
import com.telecominfraproject.wlan.profile.network.models.ApNetworkConfiguration;
import com.vmware.ovsdb.protocol.operation.result.OperationResult;
import com.vmware.ovsdb.protocol.operation.result.UpdateResult;
import com.vmware.ovsdb.service.OvsdbClient;
@RunWith(SpringRunner.class)
@ActiveProfiles(profiles = { "integration_test", })
@SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = OvsdbNodeConfigTest.class)
@Import(value = { OvsdbNodeConfig.class, OvsdbNodeConfigTest.Config.class,
})
public class OvsdbNodeConfigTest {
@Mock(answer = Answers.RETURNS_MOCKS)
OvsdbClient ovsdbClient;
@MockBean(answer = Answers.RETURNS_MOCKS)
OvsdbGet ovsdbGet;
@Mock(answer = Answers.RETURNS_MOCKS)
CompletableFuture<OperationResult[]> futureResult;
@Autowired
OvsdbNodeConfig ovsdbNodeConfig;
private MockitoSession mockito;
@Configuration
// @PropertySource({ "classpath:persistence-${envTarget:dev}.properties" })
static class Config {
@Bean
public OvsdbNodeConfig ovsdbNodeConfig() {
return new OvsdbNodeConfig();
}
}
@Before
public void setUp() throws Exception {
mockito = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking();
Mockito.when(ovsdbClient.transact(Mockito.eq(OvsdbDao.ovsdbName), Mockito.anyList())).thenReturn(futureResult);
}
@After
public void tearDown() throws Exception {
mockito.finishMocking();
}
@Test
public void testConfigureNtpServer() throws Exception {
OpensyncAPConfig opensyncApConfig = new OpensyncAPConfig();
Profile apProfile = new Profile();
apProfile.setId(1L);
apProfile.setName("ap-profile");
apProfile.setProfileType(ProfileType.equipment_ap);
apProfile.setCustomerId(2);
apProfile.setDetails(ApNetworkConfiguration.createWithDefaults());
opensyncApConfig.setApProfile(apProfile);
OperationResult[] updateNtpServerResult = new OperationResult[] { new UpdateResult(1) };
Mockito.when(futureResult.get(ovsdbNodeConfig.ovsdbTimeoutSec, TimeUnit.SECONDS))
.thenReturn(updateNtpServerResult);
ovsdbNodeConfig.configureNtpServer(ovsdbClient, opensyncApConfig);
Mockito.verify(futureResult).get(ovsdbNodeConfig.ovsdbTimeoutSec, TimeUnit.SECONDS);
Mockito.verify(ovsdbClient).transact(Mockito.eq(OvsdbDao.ovsdbName), Mockito.anyList());
}
}

View File

@@ -36,6 +36,7 @@ import com.vmware.ovsdb.service.OvsdbClient;
@Import(value = { OvsdbDao.class, OvsdbNodeTest.Config.class, OvsdbNode.class, OvsdbRadioConfig.class,
OvsdbHotspotConfig.class, OvsdbCommandConfig.class, OvsdbMonitor.class, OvsdbFirmwareConfig.class,
OvsdbStatsConfig.class, OvsdbSsidConfig.class, OvsdbRrmConfig.class, OvsdbNetworkConfig.class,
OvsdbNodeConfig.class
})
public class OvsdbNodeTest {
@@ -74,6 +75,8 @@ public class OvsdbNodeTest {
OvsdbFirmwareConfig ovsdbFirmware;
@Autowired
OvsdbCommandConfig ovsdbCommand;
@Autowired
OvsdbNodeConfig ovsdbNodeConfig;
@MockBean(answer = Answers.RETURNS_MOCKS)
OvsdbGet ovsdbGet;
@@ -110,14 +113,14 @@ public class OvsdbNodeTest {
Map<String, String> newMqttSettings = new HashMap<>();
newMqttSettings.put("broker", ovsdbNode.mqttBrokerAddress);
String mqttClientName = OvsdbToWlanCloudTypeMappingUtility.getAlteredClientCnIfRequired("AP-1",
connectNodeInfo, false);
String mqttClientName = OvsdbToWlanCloudTypeMappingUtility.getAlteredClientCnIfRequired("AP-1", connectNodeInfo,
false);
newMqttSettings.put("topics", "/ap/" + mqttClientName + "/opensync");
newMqttSettings.put("port", "" + ovsdbNode.mqttBrokerExternalPort);
newMqttSettings.put("compress", "zlib");
newMqttSettings.put("qos", "0");
newMqttSettings.put("remote_log", "1");
assert(!connectNodeInfo.mqttSettings.equals(newMqttSettings));
assert (!connectNodeInfo.mqttSettings.equals(newMqttSettings));
ConnectNodeInfo newConnectNodeInfo = ovsdbNode.updateConnectNodeInfoOnConnect(ovsdbClient, "AP-1",
connectNodeInfo, false);
assert (connectNodeInfo.ifName.equals(newConnectNodeInfo.ifName));

View File

@@ -0,0 +1,111 @@
package com.telecominfraproject.wlan.opensync.ovsdb.dao;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import com.telecominfraproject.wlan.core.model.entity.CountryCode;
import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
import com.telecominfraproject.wlan.equipment.models.Equipment;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig;
import com.telecominfraproject.wlan.profile.models.Profile;
import com.telecominfraproject.wlan.profile.rf.models.RfConfiguration;
import com.vmware.ovsdb.protocol.operation.result.OperationResult;
import com.vmware.ovsdb.protocol.schema.DatabaseSchema;
import com.vmware.ovsdb.protocol.schema.TableSchema;
import com.vmware.ovsdb.service.OvsdbClient;
@RunWith(SpringRunner.class)
@ActiveProfiles(profiles = { "integration_test", }) // NOTE: these profiles will
// be ADDED to the list of
// active profiles
@SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = OvsdbRadioConfigTest.class)
@Import(value = { OvsdbRadioConfig.class,OvsdbRadioConfigTest.Config.class,
})
public class OvsdbRadioConfigTest {
@Autowired
OvsdbRadioConfig ovsdbRadioConfig;
@Mock(answer = Answers.RETURNS_MOCKS)
CompletableFuture<OperationResult[]> selectionFutureResult;
@Mock(answer = Answers.RETURNS_MOCKS)
CompletableFuture<DatabaseSchema> getSchemaResult;
@Mock(answer = Answers.RETURNS_MOCKS)
DatabaseSchema databaseSchema;
@Mock(answer = Answers.RETURNS_MOCKS)
Map<String,TableSchema> tableSchemaMap;
@Mock(answer = Answers.RETURNS_MOCKS)
TableSchema tableSchema;
@Mock(answer = Answers.RETURNS_MOCKS)
OvsdbClient ovsdbClient;
@Configuration
// @PropertySource({ "classpath:persistence-${envTarget:dev}.properties" })
static class Config {
@Bean
public OvsdbRadioConfig ovsdbRadioConfig() {
return new OvsdbRadioConfig();
}
}
@Before
public void setUp() throws Exception {
Mockito.when(selectionFutureResult.get(Mockito.anyLong(), Mockito.eq(TimeUnit.SECONDS))).thenReturn(new OperationResult[0]);
Mockito.when(ovsdbClient.transact(Mockito.eq(OvsdbDao.ovsdbName), Mockito.anyList()))
.thenReturn(selectionFutureResult);
Mockito.when(tableSchemaMap.get(Mockito.anyString())).thenReturn(tableSchema);
Mockito.when(databaseSchema.getTables()).thenReturn(tableSchemaMap);
Mockito.when(getSchemaResult.get()).thenReturn(databaseSchema);
Mockito.when(ovsdbClient.getSchema(OvsdbDaoBase.ovsdbName)).thenReturn(getSchemaResult);
}
@After
public void tearDown() throws Exception {
}
@Test
public void testConfigureWifiRadiosOvsdbClientOpensyncAPConfig() throws Exception {
OpensyncAPConfig opensyncAPConfig = constructOpensyncAPConfig();
ovsdbRadioConfig.configureWifiRadios(ovsdbClient, opensyncAPConfig);
}
OpensyncAPConfig constructOpensyncAPConfig() {
ApElementConfiguration equipmentDetails = Mockito.mock(ApElementConfiguration.class, Mockito.RETURNS_MOCKS);
RfConfiguration rfConfig = Mockito.mock(RfConfiguration.class, Mockito.RETURNS_MOCKS);
Profile rfProfile = Mockito.mock(Profile.class, Mockito.RETURNS_MOCKS);
Mockito.when(rfProfile.getDetails()).thenReturn(rfConfig);
Equipment equipment = Mockito.mock(Equipment.class);
Mockito.when(equipment.getDetails()).thenReturn(equipmentDetails);
OpensyncAPConfig opensyncAPConfig = Mockito.mock(OpensyncAPConfig.class, Mockito.RETURNS_MOCKS);
Mockito.when(opensyncAPConfig.getCountryCode()).thenReturn(CountryCode.CA.getName());
Mockito.when(opensyncAPConfig.getCustomerEquipment()).thenReturn(equipment);
Mockito.when(opensyncAPConfig.getRfProfile()).thenReturn(rfProfile);
return opensyncAPConfig;
}
}

View File

@@ -41,6 +41,7 @@ import com.vmware.ovsdb.service.OvsdbClient;
@Import(value = { OvsdbDao.class, OvsdbSsidConfigTest.Config.class, OvsdbNode.class, OvsdbRadioConfig.class,
OvsdbHotspotConfig.class, OvsdbCommandConfig.class, OvsdbMonitor.class, OvsdbFirmwareConfig.class,
OvsdbStatsConfig.class, OvsdbSsidConfig.class, OvsdbRrmConfig.class, OvsdbNetworkConfig.class,
OvsdbNodeConfig.class
})
public class OvsdbSsidConfigTest {
@@ -79,6 +80,9 @@ public class OvsdbSsidConfigTest {
OvsdbFirmwareConfig ovsdbFirmware;
@Autowired
OvsdbCommandConfig ovsdbCommand;
@Autowired
OvsdbNodeConfig ovsdbNodeConfig;
@MockBean(answer = Answers.RETURNS_MOCKS)
OvsdbGet ovsdbGet;