/*
* Copyright 2017-present Facebook, Inc.
*
* Licensed 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 com.facebook.buck.distributed;
import com.facebook.buck.distributed.thrift.BuildSlaveConsoleEvent;
import com.facebook.buck.distributed.thrift.ConsoleEventSeverity;
import com.facebook.buck.event.ConsoleEvent;
import com.facebook.buck.log.Logger;
import com.google.common.base.Preconditions;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
public class DistBuildUtil {
private static final Logger LOG = Logger.get(ConsoleEvent.class);
private static final DateFormat DATE_FORMAT = new SimpleDateFormat("[yyyy-MM-dd HH:mm:ss.SSS]");
private DistBuildUtil() {}
public static BuildSlaveConsoleEvent createBuildSlaveConsoleEvent(
ConsoleEvent event, long timestampMillis) {
BuildSlaveConsoleEvent buildSlaveConsoleEvent = new BuildSlaveConsoleEvent();
buildSlaveConsoleEvent.setTimestampMillis(timestampMillis);
buildSlaveConsoleEvent.setMessage(event.getMessage());
if (event.getLevel().equals(Level.WARNING)) {
buildSlaveConsoleEvent.setSeverity(ConsoleEventSeverity.WARNING);
} else if (event.getLevel().equals(Level.SEVERE)) {
buildSlaveConsoleEvent.setSeverity(ConsoleEventSeverity.SEVERE);
} else {
buildSlaveConsoleEvent.setSeverity(ConsoleEventSeverity.INFO);
}
return buildSlaveConsoleEvent;
}
public static ConsoleEvent createConsoleEvent(BuildSlaveConsoleEvent event) {
Preconditions.checkState(event.isSetMessage());
Preconditions.checkState(event.isSetSeverity());
Preconditions.checkState(event.isSetTimestampMillis());
String timestampPrefix = DATE_FORMAT.format(new Date(event.getTimestampMillis())) + " ";
switch (event.getSeverity()) {
case INFO:
return ConsoleEvent.create(Level.INFO, timestampPrefix + event.getMessage());
case WARNING:
return ConsoleEvent.create(Level.WARNING, timestampPrefix + event.getMessage());
case SEVERE:
return ConsoleEvent.create(Level.SEVERE, timestampPrefix + event.getMessage());
default:
LOG.error(
String.format(
"Unsupported type of ConsoleEventSeverity received in BuildSlaveConsoleEvent: [%d]"
+ "Defaulting to SEVERE.",
event.getSeverity().getValue()));
return ConsoleEvent.create(Level.SEVERE, timestampPrefix + event.getMessage());
}
}
}