YARN-9624. Use switch case for ProtoUtils#convertFromProtoFormat containerState. Contributed by Bilwa S T
This commit is contained in:
parent
d23317b102
commit
3f0a7cd17a
|
@ -113,27 +113,74 @@ public class ProtoUtils {
|
||||||
/*
|
/*
|
||||||
* ContainerState
|
* ContainerState
|
||||||
*/
|
*/
|
||||||
private final static String CONTAINER_STATE_PREFIX = "C_";
|
public static ContainerStateProto convertToProtoFormat(ContainerState state) {
|
||||||
public static ContainerStateProto convertToProtoFormat(ContainerState e) {
|
switch (state) {
|
||||||
return ContainerStateProto.valueOf(CONTAINER_STATE_PREFIX + e.name());
|
case NEW:
|
||||||
|
return ContainerStateProto.C_NEW;
|
||||||
|
case RUNNING:
|
||||||
|
return ContainerStateProto.C_RUNNING;
|
||||||
|
case COMPLETE:
|
||||||
|
return ContainerStateProto.C_COMPLETE;
|
||||||
|
default:
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"ContainerState conversion unsupported");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public static ContainerState convertFromProtoFormat(ContainerStateProto e) {
|
|
||||||
return ContainerState.valueOf(e.name().replace(CONTAINER_STATE_PREFIX, ""));
|
public static ContainerState convertFromProtoFormat(
|
||||||
|
ContainerStateProto proto) {
|
||||||
|
switch (proto) {
|
||||||
|
case C_NEW:
|
||||||
|
return ContainerState.NEW;
|
||||||
|
case C_RUNNING:
|
||||||
|
return ContainerState.RUNNING;
|
||||||
|
case C_COMPLETE:
|
||||||
|
return ContainerState.COMPLETE;
|
||||||
|
default:
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"ContainerStateProto conversion unsupported");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Container SubState
|
* Container SubState
|
||||||
*/
|
*/
|
||||||
private final static String CONTAINER_SUB_STATE_PREFIX = "CSS_";
|
|
||||||
public static ContainerSubStateProto convertToProtoFormat(
|
public static ContainerSubStateProto convertToProtoFormat(
|
||||||
ContainerSubState e) {
|
ContainerSubState state) {
|
||||||
return ContainerSubStateProto.valueOf(
|
switch (state) {
|
||||||
CONTAINER_SUB_STATE_PREFIX + e.name());
|
case SCHEDULED:
|
||||||
|
return ContainerSubStateProto.CSS_SCHEDULED;
|
||||||
|
case RUNNING:
|
||||||
|
return ContainerSubStateProto.CSS_RUNNING;
|
||||||
|
case PAUSED:
|
||||||
|
return ContainerSubStateProto.CSS_PAUSED;
|
||||||
|
case COMPLETING:
|
||||||
|
return ContainerSubStateProto.CSS_COMPLETING;
|
||||||
|
case DONE:
|
||||||
|
return ContainerSubStateProto.CSS_DONE;
|
||||||
|
default:
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"ContainerSubState conversion unsupported");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ContainerSubState convertFromProtoFormat(
|
public static ContainerSubState convertFromProtoFormat(
|
||||||
ContainerSubStateProto e) {
|
ContainerSubStateProto proto) {
|
||||||
return ContainerSubState.valueOf(
|
switch (proto) {
|
||||||
e.name().substring(CONTAINER_SUB_STATE_PREFIX.length()));
|
case CSS_SCHEDULED:
|
||||||
|
return ContainerSubState.SCHEDULED;
|
||||||
|
case CSS_RUNNING:
|
||||||
|
return ContainerSubState.RUNNING;
|
||||||
|
case CSS_PAUSED:
|
||||||
|
return ContainerSubState.PAUSED;
|
||||||
|
case CSS_COMPLETING:
|
||||||
|
return ContainerSubState.COMPLETING;
|
||||||
|
case CSS_DONE:
|
||||||
|
return ContainerSubState.DONE;
|
||||||
|
default:
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"ContainerSubStateProto conversion unsupported");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* NodeState
|
* NodeState
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
/**
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.apache.hadoop.yarn.api.records.impl.pb;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
import org.apache.hadoop.yarn.api.records.ContainerState;
|
||||||
|
import org.apache.hadoop.yarn.api.records.ContainerSubState;
|
||||||
|
import org.apache.hadoop.yarn.proto.YarnProtos.ContainerStateProto;
|
||||||
|
import org.apache.hadoop.yarn.proto.YarnProtos.ContainerSubStateProto;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class TestProtoUtils {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConvertFromOrToProtoFormat() {
|
||||||
|
// Check if utility has all enum values
|
||||||
|
try {
|
||||||
|
Stream.of(ContainerState.values())
|
||||||
|
.forEach(a -> ProtoUtils.convertToProtoFormat(a));
|
||||||
|
Stream.of(ContainerSubState.values())
|
||||||
|
.forEach(a -> ProtoUtils.convertToProtoFormat(a));
|
||||||
|
Stream.of(ContainerSubStateProto.values())
|
||||||
|
.forEach(a -> ProtoUtils.convertFromProtoFormat(a));
|
||||||
|
Stream.of(ContainerStateProto.values())
|
||||||
|
.forEach(a -> ProtoUtils.convertFromProtoFormat(a));
|
||||||
|
} catch (IllegalArgumentException ex) {
|
||||||
|
fail(ex.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue