public void setNapdexTraceTagRules(List<NapdexTraceTagRule> rules) { int i = 1; for (NapdexTraceTagRule rule : rules) { configuration.put(NAPDEX_TRACE_TAG_RULE_PREFIX + i + PATTERN_SUFFIX, rule.getPattern()); configuration.put(NAPDEX_TRACE_TAG_RULE_PREFIX + i + THRESHOLD_SUFFIX, Long.valueOf(rule.getThreshold())); /* * NOTE !!! MUST use a Long since JSON by default deserializes all numbers * to Long(s) by default, so if we were to use an Integer, we would get * a mismatched SyncAgentConfigCommand#equals result due to the typing issue */ configuration.put(NAPDEX_TRACE_TAG_RULE_PREFIX + i + PRECEDENCE_SUFFIX, Long.valueOf(rule.getPrecedence())); i++; } }
@Override public String toString() { return "NapdexTraceTagRule{" + "precedence=" + getPrecedence() + ", keyMatcher=" + getRequiredEndPoint() + ", thresholdMillis=" + getThreshold() + ", frustratedMillis=" + frustratedMillis + '}'; } }
public NapdexTraceTagRule(int precedenceOrder, String pattern, long threshold) { setPrecedence(precedenceOrder); setPattern(pattern); setThreshold(threshold); }
public static SyncAgentConfigCommand getSyncAgentConfigCommand() { SyncAgentConfigCommand cmd = new SyncAgentConfigCommand(); cmd.setNapdexTraceTagRules(Arrays.asList(new NapdexTraceTagRule(1234, "pattern1", 4321), new NapdexTraceTagRule(2345, "pattern2", 5432), new NapdexTraceTagRule(3456, "pattern3", 6543))); cmd.setExcludeTracePathList(Arrays.asList("path1", "path2", "path3")); cmd.setMaxNumberOfTracesPerMinute(1234); return cmd; }
public synchronized long findResponseTimeThreshold(Resource resource) { if (!(resource instanceof EndPointAwareResource)) { throw new IllegalArgumentException("Only EndPoint resources have a defined threshold"); } EndPointAwareResource endpoint = (EndPointAwareResource) resource; NapdexTraceTagRule napdexRule = findResponseTimeRule(endpoint.getEndPointName()); return napdexRule.getThreshold(); }
public synchronized NapdexTraceTagRule findResponseTimeRule(EndPointName endpoint) { for (TraceTagRule rule : rules) { if (rule instanceof NapdexTraceTagRule) { NapdexTraceTagRule napdexRule = (NapdexTraceTagRule) rule; ResourceKeyMatcher endPointQuery = napdexRule.getRequiredEndPoint(); if (endPointQuery.matches(endpoint.makeKey())) { return napdexRule; } } } throw new IllegalStateException("Default threshold rule should have been matched"); }
public List<NapdexTraceTagRule> getNapdexTraceTagRules() { List<NapdexTraceTagRule> rules = new LinkedList<NapdexTraceTagRule>(); int i = 1; Serializable patternValue = configuration.get(NAPDEX_TRACE_TAG_RULE_PREFIX + i + PATTERN_SUFFIX); Serializable thresholdValue = configuration.get(NAPDEX_TRACE_TAG_RULE_PREFIX + i + THRESHOLD_SUFFIX); Serializable precedenceValue = configuration.get(NAPDEX_TRACE_TAG_RULE_PREFIX + i + PRECEDENCE_SUFFIX); while (patternValue != null && thresholdValue != null && precedenceValue != null) { rules.add(new NapdexTraceTagRule(((Number)precedenceValue).intValue(), (String)patternValue, ((Number)thresholdValue).longValue())); i++; patternValue = configuration.get(NAPDEX_TRACE_TAG_RULE_PREFIX + + i + PATTERN_SUFFIX); thresholdValue = configuration.get(NAPDEX_TRACE_TAG_RULE_PREFIX + + i + THRESHOLD_SUFFIX); precedenceValue = configuration.get(NAPDEX_TRACE_TAG_RULE_PREFIX + + i + PRECEDENCE_SUFFIX); } return rules; }
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; NapdexTraceTagRule other = (NapdexTraceTagRule) obj; return (getThreshold() == other.getThreshold()) && (getPrecedence() == other.getPrecedence()) && ObjectUtil.typedEquals(getRequiredEndPoint(), other.getRequiredEndPoint()) ; }
@Transactional(readOnly=false) public void syncRuleList(TraceTagRuleList rules) { lockMan.lockUntilTransactionHasCompleted(LOCK_LIST_NAME, LOCK_LIST_NAME); List<PersistedTraceTagRule> newRules = new ArrayList<PersistedTraceTagRule>(); PersistedTraceTagRuleList ruleList = dao.getRuleList(); for (TraceTagRule rule : rules.getRules()) { NapdexTraceTagRule napRule = (NapdexTraceTagRule)rule; newRules.add(new PersistedTraceTagRule(ruleList, napRule.getPrecedence(), napRule.getPattern(), napRule.getThreshold())); } dao.syncRules(ruleList, newRules); if (changedCallback != null) { changedCallback.onTraceTagRuleListChanged(rules); } }
public static SyncTraceTagRuleListCommand getTraceTagCommand() { TraceTagRuleList ttrl = new TraceTagRuleList(); ttrl.addRule(new NapdexTraceTagRule(1, "butter", 344555)); return new SyncTraceTagRuleListCommand(ttrl); }
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ObjectUtil.hashCode(getRequiredEndPoint()); result = prime * result + getPrecedence(); result = prime * result + MathUtil.hashValue(getThreshold()); return result; }
public TraceTagRuleList getRuleList() { TraceTagRuleList ruleList = new TraceTagRuleList(); for (PersistedTraceTagRule rule : dao.getRuleList().getRules()) { ruleList.addRule(new NapdexTraceTagRule(rule.getPrecedence(), rule.getPattern(), rule.getThreshold())); } return ruleList; }