blob: e0046d37ee20f037f3cbd75841e9b7b7dcd108de [file] [log] [blame]
// Copyright 2014 The Bazel Authors. All rights reserved.
//
// 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.google.devtools.build.lib.events;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
import java.util.EnumSet;
/** Indicates the kind of an {@link Event}. */
public enum EventKind {
/**
* An unrecoverable error resulting in abrupt termination of the server.
*
* <p>Events of this kind may be crash bugs (i.e. {@link RuntimeException}) or other errors such
* {@link OutOfMemoryError}. The only time such an event should be emitted is just prior to
* crashing. It should be the final event presented to the user before terminating.
*/
FATAL,
/**
* For errors that will prevent a successful, correct build. In general, the build tool will not
* attempt to start or continue a build if an error is encountered (though the behavior specified
* by {@code --keep_going} is a counterexample).
*
* <p>Errors of a more severe nature in the input, such as those which might cause later passes of
* the analysis to fail catastrophically, should be handled by throwing an exception.
*/
ERROR,
/** For warnings of minor problems that do not affect the integrity of a build. */
WARNING,
/**
* For atemporal information that is true throughout the entire duration of a build (e.g. the
* number of targets found).
*/
INFO,
/**
* For temporal information that changes during the duration of a build (e.g. what action is
* executing now).
*/
PROGRESS,
/** For debug messages. */
DEBUG,
// For progress messages (temporal information) relating to the start and end of particular tasks
// (e.g. "Loading package foo", "Compiling bar", etc.).
/** Beginning of a temporal task. */
START,
/** End of a temporal task. */
FINISH,
/** For command lines of subcommands executed by the build tool (like make-dbg "-v"). */
SUBCOMMAND,
// Output to stdout/stderr from subprocesses.
/** Output to stdout from subprocess. */
STDOUT,
/** Output to stderr from subprocess. */
STDERR,
// Test result messages (similar to the INFO and ERROR, but test-specific)
/** Test passed. */
PASS,
/** Test failed. */
FAIL,
/** Test timed out. */
TIMEOUT,
/** Test cancelled. */
CANCELLED,
/** For the reasoning of the dependency checker (like GNU Make "-d"). */
DEPCHECKER;
public static final ImmutableSet<EventKind> ALL_EVENTS =
Sets.immutableEnumSet(EnumSet.allOf(EventKind.class));
public static final ImmutableSet<EventKind> OUTPUT =
Sets.immutableEnumSet(EventKind.STDOUT, EventKind.STDERR);
public static final ImmutableSet<EventKind> ERRORS =
Sets.immutableEnumSet(EventKind.FATAL, EventKind.ERROR, EventKind.FAIL, EventKind.TIMEOUT);
public static final ImmutableSet<EventKind> ERRORS_AND_WARNINGS =
Sets.immutableEnumSet(
EventKind.FATAL,
EventKind.ERROR,
EventKind.WARNING,
EventKind.DEBUG,
EventKind.FAIL,
EventKind.TIMEOUT);
public static final ImmutableSet<EventKind> ERRORS_WARNINGS_AND_INFO =
Sets.immutableEnumSet(
EventKind.FATAL,
EventKind.ERROR,
EventKind.WARNING,
EventKind.DEBUG,
EventKind.PASS,
EventKind.FAIL,
EventKind.TIMEOUT,
EventKind.INFO);
public static final ImmutableSet<EventKind> ERRORS_AND_OUTPUT =
Sets.immutableEnumSet(
EventKind.FATAL,
EventKind.ERROR,
EventKind.FAIL,
EventKind.TIMEOUT,
EventKind.STDOUT,
EventKind.STDERR);
public static final ImmutableSet<EventKind> ERRORS_AND_WARNINGS_AND_OUTPUT =
Sets.immutableEnumSet(
EventKind.FATAL,
EventKind.ERROR,
EventKind.WARNING,
EventKind.DEBUG,
EventKind.FAIL,
EventKind.TIMEOUT,
EventKind.STDOUT,
EventKind.STDERR);
}