diff options
author | Ulf Adams <ulfjack@google.com> | 2015-10-14 10:08:25 +0000 |
---|---|---|
committer | David Chen <dzc@google.com> | 2015-10-14 18:29:19 +0000 |
commit | d6fce4428db80f8e5d369581baea415e202cfe62 (patch) | |
tree | 2307e2312857d082593a658b7c7bd3988145719c /src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionValue.java | |
parent | 17f11ebecacad00868d5e311254edb147daf156f (diff) |
Reimplement target pattern parsing in Skyframe.
This is currently not hooked up, and we're passing (potentially) massive
numbers of targets around.
--
MOS_MIGRATED_REVID=105395404
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionValue.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionValue.java | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionValue.java new file mode 100644 index 0000000000..4f108ba513 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionValue.java @@ -0,0 +1,111 @@ +// Copyright 2015 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.skyframe; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableSet; +import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.cmdline.ResolvedTargets; +import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; +import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; +import com.google.devtools.build.lib.packages.Target; +import com.google.devtools.build.skyframe.SkyKey; +import com.google.devtools.build.skyframe.SkyValue; + +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; + +/** + * A value referring to a computed set of resolved targets. This is used for the results of target + * pattern parsing. + */ +@Immutable +@ThreadSafe +@VisibleForTesting +public final class TestSuiteExpansionValue implements SkyValue { + private ResolvedTargets<Target> targets; + + TestSuiteExpansionValue(ResolvedTargets<Target> targets) { + this.targets = Preconditions.checkNotNull(targets); + } + + public ResolvedTargets<Target> getTargets() { + return targets; + } + + @SuppressWarnings("unused") + private void writeObject(ObjectOutputStream out) { + throw new UnsupportedOperationException(); + } + + @SuppressWarnings("unused") + private void readObject(ObjectInputStream in) { + throw new UnsupportedOperationException(); + } + + @SuppressWarnings("unused") + private void readObjectNoData() { + throw new UnsupportedOperationException(); + } + + /** + * Create a target pattern value key. + * + * @param targets the set of targets to be expanded + */ + @ThreadSafe + public static SkyKey key(ImmutableSet<Label> targets) { + return new SkyKey(SkyFunctions.TEST_SUITE_EXPANSION, new TestSuiteExpansion(targets)); + } + + /** + * A list of targets of which all test suites should be expanded. + */ + @ThreadSafe + static final class TestSuiteExpansion implements Serializable { + private final ImmutableSet<Label> targets; + + public TestSuiteExpansion(ImmutableSet<Label> targets) { + this.targets = targets; + } + + public ImmutableSet<Label> getTargets() { + return targets; + } + + @Override + public String toString() { + return "ExpandTestSuites(" + targets.toString() + ")"; + } + + @Override + public int hashCode() { + return targets.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof TestSuiteExpansion)) { + return false; + } + TestSuiteExpansion other = (TestSuiteExpansion) obj; + return other.targets.equals(targets); + } + } +} |