Refine search
public MatrixConfiguration(MatrixProject parent, Combination c) { super(parent, c.toString()); setCombination(c); updateTransientActions(); }
@Override public Object decode(Class targetClass, Object fromDBObject, MappedField optionalExtraInfo) { return new Combination((Map<String, String>) fromDBObject); } }
public MatrixConfiguration getItem(String name) { try { return getItem(Combination.fromString(name)); } catch (IllegalArgumentException e) { return null; } }
public int compareTo(Combination that) { int d = this.size()-that.size(); if(d!=0) return d; Iterator<Map.Entry<String,String>> itr = this.entrySet().iterator(); Iterator<Map.Entry<String,String>> jtr = that.entrySet().iterator(); while(itr.hasNext()) { Map.Entry<String,String> i = itr.next(); Map.Entry<String,String> j = jtr.next(); d = i.getKey().compareTo(j.getKey()); if(d!=0) return d; d = i.getValue().compareTo(j.getValue()); if(d!=0) return d; } return 0; }
/** * Works like {@link #toString()} but only include the given axes. */ public String toString(Collection<Axis> subset) { if(size()==1 && subset.size()==1) return values().iterator().next(); StringBuilder buf = new StringBuilder(); for (Axis a : subset) { if(buf.length()>0) buf.append(','); buf.append(a.getName()).append('=').append(get(a)); } if(buf.length()==0) buf.append("default"); // special case to avoid 0-length name. return buf.toString(); }
@Override public EnvVars getEnvironment(Node node, TaskListener listener) throws IOException, InterruptedException { EnvVars env = super.getEnvironment(node, listener); AxisList axes = getParent().getAxes(); for (Map.Entry<String,String> e : getCombination().entrySet()) { Axis a = axes.find(e.getKey()); if (a!=null) a.addBuildVariable(e.getValue(),env); // TODO: hijacking addBuildVariable but perhaps we need addEnvVar? else env.put(e.getKey(), e.getValue()); } return env; }
for (Publisher pub : p.getPublishers().values()) { if (pub instanceof MatrixAggregatable) { MatrixAggregatable ma = (MatrixAggregatable) pub; for (JobProperty prop : p.getProperties().values()) { if (prop instanceof MatrixAggregatable) { MatrixAggregatable ma = (MatrixAggregatable) prop; axes = p.getAxes(); Collection<MatrixConfiguration> activeConfigurations = p.getActiveConfigurations(); final int n = getNumber(); AxisList axes = p.getAxes(); String touchStoneCombinationFilter = p.getTouchStoneCombinationFilter(); if (touchStoneFilter != null && c.getCombination() .evalGroovyExpression(axes, touchStoneCombinationFilter)) { touchStoneConfigurations.add(c); } else { for (MatrixConfiguration c : activeConfigurations) { if (q.cancel(c)) { logger.println(Messages.MatrixBuild_Cancelled(c.getDisplayName())); MatrixRun b = c.getBuildByNumber(n); if (b != null) { Executor exe = b.getExecutor();
@Override public String getDisplayName() { StaplerRequest req = Stapler.getCurrentRequest(); if(req!=null) { List<Ancestor> ancs = req.getAncestors(); for( int i=1; i<ancs.size(); i++) { if(ancs.get(i).getObject()==this) { if(ancs.get(i-1).getObject() instanceof MatrixBuild) { return getParent().getCombination().toCompactString(getParent().getParent().getAxes()); } } } } return super.getDisplayName(); }
File[] oldDirs = getConfigurationsDir().listFiles(new FileFilter() { public boolean accept(File child) { return child.isDirectory() && !child.getName().startsWith("axis-"); Combination c = Combination.fromString(dir.getName()); dir.renameTo(getRootDirFor(c)); } catch (IllegalArgumentException e) { loadConfigurations(getConfigurationsDir(),configurations,Collections.<String,String>emptyMap()); this.configurations = configurations; for (Combination c : axes.list()) { String combinationFilter = getCombinationFilter(); if (c.evalGroovyExpression(axes, combinationFilter)) { LOGGER.fine("Adding configuration: " + c); MatrixConfiguration config = configurations.get(c); if (config == null) { config = new MatrixConfiguration(this, c); config.save(); configurations.put(config.getCombination(), config);
File[] oldDirs = getConfigurationsDir().listFiles(new FileFilter() { public boolean accept(File child) { return child.isDirectory() && !child.getName().startsWith("axis-"); Combination c = Combination.fromString(dir.getName()); final File target = getRootDirFor(c); if (!dir.renameTo(target)) { LOGGER.log(Level.WARNING, "Cannot rename directory {0} to {1}", new Object[]{dir, target}); loadConfigurations(getConfigurationsDir(),configurations,Collections.<String,String>emptyMap()); this.configurations = configurations; public Combination apply(@Nullable List<String> strings) { assert strings != null; return new Combination(axes, strings); if(isDynamicFilter || c.evalGroovyExpression(axes,getCombinationFilter())) { LOGGER.fine("Adding configuration: " + c); MatrixConfiguration config = configurations.get(c); if(config==null) { config = new MatrixConfiguration(this,c); config.onCreatedFromScratch(); config.save(); configurations.put(config.getCombination(), config);
public static boolean isfiltrated(final AbstractBuild build, String combinationFilter) { //Empty combination consider as filter all if (StringUtils.isEmpty(combinationFilter)) return true; if (build.getProject() instanceof MatrixConfiguration) { MatrixConfiguration matrixConf = ((MatrixConfiguration) build.getProject()); return !matrixConf.getCombination(). evalGroovyExpression(matrixConf.getParent().getAxes(), combinationFilter); } return false; }
@Override public String getDisplayName() { return combination.toCompactString(getParent().getAxes()); }
XmlFile config = Items.getConfigFile(v); if(config.exists()) { Combination comb = new Combination(c); if(item==null) { item = (MatrixConfiguration) config.read(); item.setCombination(comb); item.onLoad(this, v.getName()); result.put(item.getCombination(), item); loadConfigurations(v,result,c);
@Override public boolean doBuildConfiguration(MatrixBuild b, MatrixConfiguration c) { MatrixSubsetAction a = b.getAction(MatrixSubsetAction.class); if (a==null) return true; // run the filter and restrict the subset to run return c.getCombination().evalGroovyExpression(b.getParent().getAxes(),a.getFilter()); } }
public static String getBuildNumber(Run build) { String buildNumber = String.valueOf(build.getNumber()); if (build instanceof MatrixRun) { buildNumber += " :: "; Combination combination = ((MatrixRun) build).getProject().getCombination(); buildNumber += combination.toString(); } return buildNumber; }
/** * Gets the 8 character-wide hash code for this combination */ public String digest() { return Util.getDigestOf(toString()); }
public static void addMatrixCombination(Run<?, ?> build, ArtifactoryClientConfiguration configuration) { if (build.getParent() instanceof MatrixConfiguration) { Combination combination = ((MatrixConfiguration) build.getParent()).getCombination(); for (Map.Entry<String, String> entries : combination.entrySet()) { configuration.info.addRunParameters(entries.getKey(), entries.getValue()); } } } }
/** * Evaluates the given Groovy expression with values bound from this combination. * * <p> * For example, if this combination is a=X,b=Y, then expressions like <tt>a=="X"</tt> would evaluate to * true. */ public boolean evalGroovyExpression(AxisList axes, String expression) { if(Util.fixEmptyAndTrim(expression)==null) return true; Binding binding = new Binding(); for (Map.Entry<String, String> e : entrySet()) binding.setVariable(e.getKey(),e.getValue()); binding.setVariable("index",toModuloIndex(axes)); binding.setVariable("uniqueId",toIndex(axes)); GroovyShell shell = new GroovyShell(binding); Object result = shell.evaluate("use("+BooleanCategory.class.getName().replace('$','.')+") {"+expression+"}"); return TRUE.equals(result); }
@Override public AbstractBuild<?,?> resolveChild(Child child) { MatrixBuild b = (MatrixBuild)owner; return b.getProject().getItem(Combination.fromString(child.name)).getBuildByNumber(child.build); }
public File getRootDirFor(Combination combination) { File f = getConfigurationsDir(); for (Entry<String, String> e : combination.entrySet()) f = new File(f,"axis-"+e.getKey()+'/'+Util.rawEncode(e.getValue())); f.getParentFile().mkdirs(); return f; }