mirror of
https://github.com/Telecominfraproject/wlan-cloud-opensync-controller.git
synced 2025-11-02 11:37:49 +00:00
WIFI-1488: Configured NTP Server not used by AP
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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 : "")
|
||||
+ "]";
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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));
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user