unit test for interface patterns in libvirt compute resource

This commit is contained in:
Daan Hoogland 2015-10-23 17:17:40 +02:00
parent f1ea27ed37
commit 5a134a6fe6
2 changed files with 42 additions and 2 deletions

View File

@ -1160,8 +1160,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
for (int i = 0; i < interfaces.length; i++) {
final String fname = interfaces[i].getName();
s_logger.debug("matchPifFileInDirectory: file name '" + fname + "'");
if (fname.startsWith("eth") || fname.startsWith("bond") || fname.startsWith("team") || fname.startsWith("vlan") || fname.startsWith("vx") || fname.startsWith("em") ||
fname.matches("^p\\d+p\\d+.*") || fname.startsWith("ens") || fname.startsWith("eno") || fname.startsWith("enp") || fname.startsWith("enx")) {
if (isInterface(fname)) {
return fname;
}
}
@ -1170,6 +1169,34 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
return "";
}
String [] _ifNamePrefixes = {
"eth",
"bond",
"vlan",
"vx",
"em",
"ens",
"eno",
"enp",
"team",
"enx",
"^p\\d+p\\d+"
};
/**
* @param fname
* @return
*/
boolean isInterface(final String fname) {
StringBuffer commonPattern = new StringBuffer();
for (String ifNamePrefix : _ifNamePrefixes) {
commonPattern.append("|(").append(ifNamePrefix).append(".*)");
}
if(fname.matches(commonPattern.toString())) {
return true;
}
return false;
}
public boolean checkNetwork(final String networkName) {
if (networkName == null) {
return true;

View File

@ -4999,4 +4999,17 @@ public class LibvirtComputingResourceTest {
assertFalse(answer.getResult());
}
@Test
public void testIsInterface () {
LibvirtComputingResource lvcr = new LibvirtComputingResource();
assertFalse(lvcr.isInterface("bla"));
assertTrue(lvcr.isInterface("p99p00"));
for (String ifNamePrefix : lvcr._ifNamePrefixes) {
// excluding regexps as "\\\\d+" won't replace with String.replaceAll(String,String);
if (!ifNamePrefix.contains("\\")) {
assertTrue(lvcr.isInterface(ifNamePrefix + "0"));
}
}
}
}