Skip to content

Commit

Permalink
Merge katalyzer configuration with main config.yaml.
Browse files Browse the repository at this point in the history
Addresses issue #1.
  • Loading branch information
eldering committed Mar 8, 2017
1 parent f0393e9 commit 0a7a8fd
Show file tree
Hide file tree
Showing 5 changed files with 91 additions and 97 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
config.yaml
katalyze/bin
katalyze/katalyzer.yaml
.metadata
*.class
*~
Expand Down
57 changes: 57 additions & 0 deletions config.yaml.template
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,63 @@ teambackup:
interval: 120
lastTeam: 119

# Configuration for the Katalyzer
katalyzer:
# Database (main configuration is taken from common database config above)
db:
enable: true

# Internal web server
web:
enable: true
compress: true
port: 8099

# File publisher
file:
enable: false
targetDirectory: /home/icpclive/autoanalyst/output

# Twitter feed
twitter:
enable: false
oAuthConsumer: ["", ""]
accessToken: ["", ""]
hashtag: "#katalyzer"

# Event Stream
eventStream:
enable: true
target: /home/icpclive/autoanalyst/output/eventstream.xml
# The eventStream.target file needs to be writable by the
# katalyzer process in order for the event stream to be available.
# This also applies if you are only accessing the event stream
# using http

rule:
# ProblemFirstSolved - whenever a problem is solved for the first time
problemFirstSolved:
enable: true

# NewLeader - when a team takes the lead, or gets into the top n positions
newLeader:
enable: true
ranks: 10
breakingRanks: 5

# RejectedSubmission - when the judges reject a submission from
# one of the top n teams
rejectedSubmission:
enable: true
ranks: 10

# RankPredictor - when a team submits a solution that would put
# the team among the top n teams
rankPredictor:
enable: true
ranks: 10
# exec: "./capture.sh {teamId} {time} {currentRank} {potentialRank}"

codeActivity:
scoreboardFreezeMinutes: 240
defaultGranularityMinutes: 5
Expand Down
71 changes: 0 additions & 71 deletions katalyze/katalyzer.yaml.template

This file was deleted.

57 changes: 33 additions & 24 deletions katalyze/src/katalyzeapp/ConfigReader.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,20 +48,29 @@ public ConfigReader(Configuration config) {


private void setupDatabaseNotifier(Analyzer analyzer) {
if (!config.getBoolean("db.enable", false)) {
if (!config.getBoolean("katalyzer.db.enable", false)) {
return;
}


String connection = "jdbc:mysql://"
+ config.getString("database.host") + "/"
+ config.getString("database.name") + "?user="
+ config.getString("database.user") + "&password=";


logger.info("Connecting to database: "+connection+"????");

connection += config.getString("database.password");

DatabaseNotificationConfig dbConfig = new DatabaseNotificationConfig(
config.getString("db.driver", "com.mysql.jdbc.Driver"),
config.getString("db.connection"));
"com.mysql.jdbc.Driver", connection);

try {
logger.info("Enabling database notifier");

if (config.getBoolean("db.exportMessages",true)) {
if (config.getBoolean("katalyzer.db.exportMessages",true)) {
DatabaseNotificationTarget notifier = new DatabaseNotificationTarget(dbConfig);
notifier.suppressUntil(config.getInt("notifications.suppressUntil", 0));
notifier.suppressUntil(config.getInt("katalyzer.notifications.suppressUntil", 0));

StandingsUpdatedEvent rule = new AllSubmissions(dbConfig);
analyzer.addNotifier(notifier);
Expand All @@ -79,30 +88,30 @@ private void setupDatabaseNotifier(Analyzer analyzer) {
}

private void setupTwitterNotifier(Analyzer analyzer) {
if (!config.getBoolean("twitter.enable", false)) {
if (!config.getBoolean("katalyzer.twitter.enable", false)) {
return;
}

logger.info("will export to twitter");

TwitterConfig twitterConfig = new TwitterConfig(
config.getStringArray("twitter.oAuthConsumer"),
config.getStringArray("twitter.accessToken"),
config.getString("twitter.hashtag")
config.getStringArray("katalyzer.twitter.oAuthConsumer"),
config.getStringArray("katalyzer.twitter.accessToken"),
config.getString("katalyzer.twitter.hashtag")
);

TwitterNotificationTarget twitterNotifier = new TwitterNotificationTarget(twitterConfig);
twitterNotifier.suppressUntil(config.getInt("notifications.suppressUntil", 0));
twitterNotifier.suppressUntil(config.getInt("katalyzer.notifications.suppressUntil", 0));

analyzer.addNotifier(twitterNotifier);
}

private boolean ruleEnabled(String ruleName) {
return (config.getBoolean("rule."+ruleName+".enable", false));
return (config.getBoolean("katalyzer.rule."+ruleName+".enable", false));
}

private boolean featureEnabled(String featureName) {
return (config.getBoolean(featureName+".enable", false));
return (config.getBoolean("katalyzer."+featureName+".enable", false));
}


Expand All @@ -112,26 +121,26 @@ private void addRuleIfEnabled(Analyzer analyzer, String ruleName, StateComparing
}

analyzer.addRule(newRule);
String execTemplate = config.getString("rule."+ruleName+".exec", "");
String execTemplate = config.getString("katalyzer.rule."+ruleName+".exec", "");
if (!"".equals(execTemplate)) {
logger.info(String.format("Adding trigger on rule %s: %s", newRule, execTemplate));
ShellNotificationTarget executer = new ShellNotificationTarget(execTemplate);
executer.suppressUntil(config.getInt("notifications.suppressUntil", 0));
executer.suppressUntil(config.getInt("katalyzer.notifications.suppressUntil", 0));
newRule.addNotificationTarget(executer);
}
}

private void setupRules(Analyzer analyzer) {
addRuleIfEnabled(analyzer, "problemFirstSolved", new ProblemFirstSolved());
addRuleIfEnabled(analyzer, "newLeader", new NewLeader(config.getInt("rule.newLeader.breakingRanks",4), config.getInt("rule.newLeader.ranks", 10)));
addRuleIfEnabled(analyzer, "rejectedSubmission", new RejectedSubmission(config.getInt("rule.RejectedSubmission.ranks", 10)));
addRuleIfEnabled(analyzer, "rankPredictor", new RankPredictor(config.getInt("rule.rankPredictor.ranks", 10)));
addRuleIfEnabled(analyzer, "newLeader", new NewLeader(config.getInt("katalyzer.rule.newLeader.breakingRanks",4), config.getInt("katalyzer.rule.newLeader.ranks", 10)));
addRuleIfEnabled(analyzer, "rejectedSubmission", new RejectedSubmission(config.getInt("katalyzer.rule.RejectedSubmission.ranks", 10)));
addRuleIfEnabled(analyzer, "rankPredictor", new RankPredictor(config.getInt("katalyzer.rule.rankPredictor.ranks", 10)));
}

private void setupCharts(Contest contest, Analyzer analyzer) {
if (config.getBoolean("charts.enable",false)) {
if (config.getBoolean("katalyzer.charts.enable",false)) {
logger.info("going to create charts");
String targetDirectory = config.getString("charts.directory", "output");
String targetDirectory = config.getString("katalyzer.charts.directory", "output");
ChartDumperHook chartDumperHook = new ChartDumperHook(contest, new File(targetDirectory));
analyzer.addOutputHook(chartDumperHook);
analyzer.addOutputHook(new ModelDumperHook(contest, chartDumperHook));
Expand All @@ -140,7 +149,7 @@ private void setupCharts(Contest contest, Analyzer analyzer) {

private EventFeedFile setupOutputStream(Analyzer analyzer, ContestMessages messageHandlers) {
if (featureEnabled("eventStream")) {
String target = config.getString("eventStream.target");
String target = config.getString("katalyzer.eventStream.target");


File f = new File(target);
Expand Down Expand Up @@ -168,8 +177,8 @@ private EventFeedFile setupOutputStream(Analyzer analyzer, ContestMessages messa
public void setupWebPublisher(Contest contest, Analyzer analyzer, EventFeedFile augmentedEventFeed) {
KatalyzerHttpHandler httpHandler;
if (featureEnabled("web")) {
int port = config.getInteger("web.port", 8099);
boolean useCompression = config.getBoolean("web.compress", true);
int port = config.getInteger("katalyzer.web.port", 8099);
boolean useCompression = config.getBoolean("katalyzer.web.compress", true);

WebPublisher webPublisher = new WebPublisher(useCompression);

Expand All @@ -186,7 +195,7 @@ public void setupWebPublisher(Contest contest, Analyzer analyzer, EventFeedFile

public void setupFilePublisher(Contest contest, Analyzer analyzer) {
if (featureEnabled("file")) {
String targetDirectory = config.getString("file.targetDirectory");
String targetDirectory = config.getString("katalyzer.file.targetDirectory");

try {
FileWebPublisher publisher = new FileWebPublisher(targetDirectory);
Expand Down
2 changes: 1 addition & 1 deletion katalyze/src/katalyzeapp/Katalyze.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public static void main(String[] args) throws Exception {
}

if (configFileName == null) {
configFileName = "katalyzer.yaml";
configFileName = "config.yaml";
}

try {
Expand Down

0 comments on commit 0a7a8fd

Please sign in to comment.