Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

YARN-11245. Upgrade JUnit from 4 to 5 in hadoop-yarn-csi #4778

Merged
merged 1 commit into from
Aug 30, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions hadoop-yarn-project/hadoop-yarn/hadoop-yarn-csi/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,16 @@
<artifactId>assertj-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,17 +42,19 @@
import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.exceptions.YarnException;
import org.apache.hadoop.yarn.ipc.YarnRPC;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;

import java.io.File;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.ServerSocket;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.apache.hadoop.yarn.api.protocolrecords.ValidateVolumeCapabilitiesRequest.AccessMode.MULTI_NODE_MULTI_WRITER;
import static org.apache.hadoop.yarn.api.protocolrecords.ValidateVolumeCapabilitiesRequest.VolumeType.FILE_SYSTEM;

Expand All @@ -64,15 +66,15 @@ public class TestCsiAdaptorService {
private static File testRoot = null;
private static String domainSocket = null;

@BeforeClass
@BeforeAll
public static void setUp() throws IOException {
testRoot = GenericTestUtils.getTestDir("csi-test");
File socketPath = new File(testRoot, "csi.sock");
FileUtils.forceMkdirParent(socketPath);
domainSocket = "unix://" + socketPath.getAbsolutePath();
}

@AfterClass
@AfterAll
public static void tearDown() throws IOException {
if (testRoot != null) {
FileUtils.deleteDirectory(testRoot);
Expand Down Expand Up @@ -113,7 +115,7 @@ default NodeUnpublishVolumeResponse nodeUnpublishVolume(
}

@Test
public void testValidateVolume() throws IOException, YarnException {
void testValidateVolume() throws IOException, YarnException {
ServerSocket ss = new ServerSocket(0);
ss.close();
InetSocketAddress address = new InetSocketAddress(ss.getLocalPort());
Expand Down Expand Up @@ -145,20 +147,20 @@ public ValidateVolumeCapabilitiesResponse validateVolumeCapacity(
ValidateVolumeCapabilitiesRequest request) throws YarnException,
IOException {
// validate we get all info from the request
Assert.assertEquals("volume-id-0000123", request.getVolumeId());
Assert.assertEquals(1, request.getVolumeCapabilities().size());
Assert.assertEquals(Csi.VolumeCapability.AccessMode
assertEquals("volume-id-0000123", request.getVolumeId());
assertEquals(1, request.getVolumeCapabilities().size());
assertEquals(Csi.VolumeCapability.AccessMode
.newBuilder().setModeValue(5).build().getMode().name(),
request.getVolumeCapabilities().get(0).getAccessMode().name());
Assert.assertEquals(2, request.getVolumeCapabilities().get(0)
assertEquals(2, request.getVolumeCapabilities().get(0)
.getMountFlags().size());
Assert.assertTrue(request.getVolumeCapabilities().get(0)
assertTrue(request.getVolumeCapabilities().get(0)
.getMountFlags().contains("mountFlag1"));
Assert.assertTrue(request.getVolumeCapabilities().get(0)
assertTrue(request.getVolumeCapabilities().get(0)
.getMountFlags().contains("mountFlag2"));
Assert.assertEquals(2, request.getVolumeAttributes().size());
Assert.assertEquals("v1", request.getVolumeAttributes().get("k1"));
Assert.assertEquals("v2", request.getVolumeAttributes().get("k2"));
assertEquals(2, request.getVolumeAttributes().size());
assertEquals("v1", request.getVolumeAttributes().get("k1"));
assertEquals("v2", request.getVolumeAttributes().get("k2"));
// return a fake result
return ValidateVolumeCapabilitiesResponse
.newInstance(false, "this is a test");
Expand All @@ -178,22 +180,22 @@ public ValidateVolumeCapabilitiesResponse validateVolumeCapacity(
ImmutableList.of(
new ValidateVolumeCapabilitiesRequest
.VolumeCapability(
MULTI_NODE_MULTI_WRITER, FILE_SYSTEM,
MULTI_NODE_MULTI_WRITER, FILE_SYSTEM,
ImmutableList.of("mountFlag1", "mountFlag2"))),
ImmutableMap.of("k1", "v1", "k2", "v2"));
ImmutableMap.of("k1", "v1", "k2", "v2"));

ValidateVolumeCapabilitiesResponse response = client
.validateVolumeCapacity(request);

Assert.assertEquals(false, response.isSupported());
Assert.assertEquals("this is a test", response.getResponseMessage());
assertEquals(false, response.isSupported());
assertEquals("this is a test", response.getResponseMessage());
} finally {
service.stop();
}
}

@Test
public void testValidateVolumeWithNMProxy() throws Exception {
void testValidateVolumeWithNMProxy() throws Exception {
ServerSocket ss = new ServerSocket(0);
ss.close();
InetSocketAddress address = new InetSocketAddress(ss.getLocalPort());
Expand Down Expand Up @@ -225,21 +227,21 @@ public ValidateVolumeCapabilitiesResponse validateVolumeCapacity(
ValidateVolumeCapabilitiesRequest request)
throws YarnException, IOException {
// validate we get all info from the request
Assert.assertEquals("volume-id-0000123", request.getVolumeId());
Assert.assertEquals(1, request.getVolumeCapabilities().size());
Assert.assertEquals(
assertEquals("volume-id-0000123", request.getVolumeId());
assertEquals(1, request.getVolumeCapabilities().size());
assertEquals(
Csi.VolumeCapability.AccessMode.newBuilder().setModeValue(5)
.build().getMode().name(),
request.getVolumeCapabilities().get(0).getAccessMode().name());
Assert.assertEquals(2,
assertEquals(2,
request.getVolumeCapabilities().get(0).getMountFlags().size());
Assert.assertTrue(request.getVolumeCapabilities().get(0).getMountFlags()
assertTrue(request.getVolumeCapabilities().get(0).getMountFlags()
.contains("mountFlag1"));
Assert.assertTrue(request.getVolumeCapabilities().get(0).getMountFlags()
assertTrue(request.getVolumeCapabilities().get(0).getMountFlags()
.contains("mountFlag2"));
Assert.assertEquals(2, request.getVolumeAttributes().size());
Assert.assertEquals("v1", request.getVolumeAttributes().get("k1"));
Assert.assertEquals("v2", request.getVolumeAttributes().get("k2"));
assertEquals(2, request.getVolumeAttributes().size());
assertEquals("v1", request.getVolumeAttributes().get("k1"));
assertEquals("v2", request.getVolumeAttributes().get("k2"));
// return a fake result
return ValidateVolumeCapabilitiesResponse
.newInstance(false, "this is a test");
Expand All @@ -261,50 +263,59 @@ public ValidateVolumeCapabilitiesResponse validateVolumeCapacity(
.newInstance("volume-id-0000123",
ImmutableList.of(new ValidateVolumeCapabilitiesRequest
.VolumeCapability(
MULTI_NODE_MULTI_WRITER, FILE_SYSTEM,
MULTI_NODE_MULTI_WRITER, FILE_SYSTEM,
ImmutableList.of("mountFlag1", "mountFlag2"))),
ImmutableMap.of("k1", "v1", "k2", "v2"));

ValidateVolumeCapabilitiesResponse response = adaptorClient
.validateVolumeCapacity(request);
Assert.assertEquals(false, response.isSupported());
Assert.assertEquals("this is a test", response.getResponseMessage());
assertEquals(false, response.isSupported());
assertEquals("this is a test", response.getResponseMessage());

service.stop();
}

@Test (expected = ServiceStateException.class)
public void testMissingConfiguration() {
Configuration conf = new Configuration();
CsiAdaptorProtocolService service =
new CsiAdaptorProtocolService(new FakeCsiAdaptor() {});
service.init(conf);
@Test
void testMissingConfiguration() {
assertThrows(ServiceStateException.class, () -> {
Configuration conf = new Configuration();
CsiAdaptorProtocolService service =
new CsiAdaptorProtocolService(new FakeCsiAdaptor() {
});
service.init(conf);
});
}

@Test (expected = ServiceStateException.class)
public void testInvalidServicePort() {
Configuration conf = new Configuration();
conf.set(YarnConfiguration.NM_CSI_ADAPTOR_PREFIX
+ "test-driver-0001.address",
"0.0.0.0:-100"); // this is an invalid address
CsiAdaptorProtocolService service =
new CsiAdaptorProtocolService(new FakeCsiAdaptor() {});
service.init(conf);
@Test
void testInvalidServicePort() {
assertThrows(ServiceStateException.class, () -> {
Configuration conf = new Configuration();
conf.set(YarnConfiguration.NM_CSI_ADAPTOR_PREFIX
+ "test-driver-0001.address",
"0.0.0.0:-100"); // this is an invalid address
CsiAdaptorProtocolService service =
new CsiAdaptorProtocolService(new FakeCsiAdaptor() {
});
service.init(conf);
});
}

@Test (expected = ServiceStateException.class)
public void testInvalidHost() {
Configuration conf = new Configuration();
conf.set(YarnConfiguration.NM_CSI_ADAPTOR_PREFIX
+ "test-driver-0001.address",
"192.0.1:8999"); // this is an invalid ip address
CsiAdaptorProtocolService service =
new CsiAdaptorProtocolService(new FakeCsiAdaptor() {});
service.init(conf);
@Test
void testInvalidHost() {
assertThrows(ServiceStateException.class, () -> {
Configuration conf = new Configuration();
conf.set(YarnConfiguration.NM_CSI_ADAPTOR_PREFIX
+ "test-driver-0001.address",
"192.0.1:8999"); // this is an invalid ip address
CsiAdaptorProtocolService service =
new CsiAdaptorProtocolService(new FakeCsiAdaptor() {
});
service.init(conf);
});
}

@Test
public void testCustomizedAdaptor() throws IOException, YarnException {
void testCustomizedAdaptor() throws IOException, YarnException {
ServerSocket ss = new ServerSocket(0);
ss.close();
InetSocketAddress address = new InetSocketAddress(ss.getLocalPort());
Expand Down Expand Up @@ -349,15 +360,15 @@ public void testCustomizedAdaptor() throws IOException, YarnException {

ValidateVolumeCapabilitiesResponse response = adaptorClient
.validateVolumeCapacity(request);
Assert.assertEquals(true, response.isSupported());
Assert.assertEquals("verified via MockCsiAdaptor",
assertEquals(true, response.isSupported());
assertEquals("verified via MockCsiAdaptor",
response.getResponseMessage());

services.stop();
}

@Test
public void testMultipleCsiAdaptors() throws IOException, YarnException {
void testMultipleCsiAdaptors() throws IOException, YarnException {
ServerSocket driver1Addr = new ServerSocket(0);
ServerSocket driver2Addr = new ServerSocket(0);

Expand All @@ -374,22 +385,22 @@ public void testMultipleCsiAdaptors() throws IOException, YarnException {

// customized-driver-1
conf.setSocketAddr(YarnConfiguration.NM_CSI_ADAPTOR_PREFIX
+ "customized-driver-1.address", address1);
+ "customized-driver-1.address", address1);
conf.set(YarnConfiguration.NM_CSI_ADAPTOR_PREFIX
+ "customized-driver-1.class",
+ "customized-driver-1.class",
"org.apache.hadoop.yarn.csi.adaptor.MockCsiAdaptor");
conf.set(YarnConfiguration.NM_CSI_DRIVER_PREFIX
+ "customized-driver-1.endpoint",
+ "customized-driver-1.endpoint",
"unix:///tmp/customized-driver-1.sock");

// customized-driver-2
conf.setSocketAddr(YarnConfiguration.NM_CSI_ADAPTOR_PREFIX
+ "customized-driver-2.address", address2);
conf.set(YarnConfiguration.NM_CSI_ADAPTOR_PREFIX
+ "customized-driver-2.class",
+ "customized-driver-2.class",
"org.apache.hadoop.yarn.csi.adaptor.MockCsiAdaptor");
conf.set(YarnConfiguration.NM_CSI_DRIVER_PREFIX
+ "customized-driver-2.endpoint",
+ "customized-driver-2.endpoint",
"unix:///tmp/customized-driver-2.sock");

driver1Addr.close();
Expand Down Expand Up @@ -427,8 +438,8 @@ public void testMultipleCsiAdaptors() throws IOException, YarnException {

ValidateVolumeCapabilitiesResponse response = client1
.validateVolumeCapacity(request);
Assert.assertEquals(true, response.isSupported());
Assert.assertEquals("verified via MockCsiAdaptor",
assertEquals(true, response.isSupported());
assertEquals("verified via MockCsiAdaptor",
response.getResponseMessage());


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,46 +21,48 @@
import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.GetPluginInfoRequestPBImpl;
import org.apache.hadoop.yarn.api.protocolrecords.impl.pb.GetPluginInfoResponsePBImpl;
import org.apache.hadoop.yarn.proto.CsiAdaptorProtos;
import org.junit.Assert;
import org.junit.Test;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;

/**
* Verify the integrity of GetPluginInfoRequest and GetPluginInfoResponse.
*/
public class TestGetPluginInfoRequestResponse {

@Test
public void testGetPluginInfoRequestPBRecord() {
void testGetPluginInfoRequestPBRecord() {
CsiAdaptorProtos.GetPluginInfoRequest requestProto =
CsiAdaptorProtos.GetPluginInfoRequest.newBuilder().build();
GetPluginInfoRequestPBImpl pbImpl =
new GetPluginInfoRequestPBImpl(requestProto);
Assert.assertNotNull(pbImpl);
Assert.assertEquals(requestProto, pbImpl.getProto());
assertNotNull(pbImpl);
assertEquals(requestProto, pbImpl.getProto());
}

@Test
public void testGetPluginInfoResponsePBRecord() {
void testGetPluginInfoResponsePBRecord() {
CsiAdaptorProtos.GetPluginInfoResponse responseProto =
CsiAdaptorProtos.GetPluginInfoResponse.newBuilder()
.setName("test-driver")
.setVendorVersion("1.0.1")
.build();
.setName("test-driver")
.setVendorVersion("1.0.1")
.build();

GetPluginInfoResponsePBImpl pbImpl =
new GetPluginInfoResponsePBImpl(responseProto);
Assert.assertEquals("test-driver", pbImpl.getDriverName());
Assert.assertEquals("1.0.1", pbImpl.getVersion());
Assert.assertEquals(responseProto, pbImpl.getProto());
assertEquals("test-driver", pbImpl.getDriverName());
assertEquals("1.0.1", pbImpl.getVersion());
assertEquals(responseProto, pbImpl.getProto());

GetPluginInfoResponse pbImpl2 = GetPluginInfoResponsePBImpl
.newInstance("test-driver", "1.0.1");
Assert.assertEquals("test-driver", pbImpl2.getDriverName());
Assert.assertEquals("1.0.1", pbImpl2.getVersion());
assertEquals("test-driver", pbImpl2.getDriverName());
assertEquals("1.0.1", pbImpl2.getVersion());

CsiAdaptorProtos.GetPluginInfoResponse proto =
((GetPluginInfoResponsePBImpl) pbImpl2).getProto();
Assert.assertEquals("test-driver", proto.getName());
Assert.assertEquals("1.0.1", proto.getVendorVersion());
assertEquals("test-driver", proto.getName());
assertEquals("1.0.1", proto.getVendorVersion());
}
}
Loading