Skip to content

Commit

Permalink
Client library changes for codahale/signalfx integration
Browse files Browse the repository at this point in the history
Summary:
A few extra libraries and helper function to join source/metric
pairs

Test Plan: Used internally

Reviewed By: kris
  • Loading branch information
Jack committed Aug 23, 2014
1 parent dba3584 commit 381b490
Show file tree
Hide file tree
Showing 27 changed files with 727 additions and 243 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -31,3 +31,4 @@ cleanmvn.dot
*.iml
.idea
/analytics/server/log/
*.versionsBackup
2 changes: 2 additions & 0 deletions deploy_release.sh
@@ -0,0 +1,2 @@
#!/bin/bash
mvn clean deploy -P release
2 changes: 2 additions & 0 deletions deploy_snapshot.sh
@@ -0,0 +1,2 @@
#!/bin/bash
mvn clean deploy
58 changes: 51 additions & 7 deletions pom.xml
Expand Up @@ -3,10 +3,16 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>7</version>
</parent>

<groupId>com.signalfuse.public</groupId>
<artifactId>clients-parent</artifactId>
<name>SignalFuse parent</name>
<version>1-SNAPSHOT</version>
<version>0.0.6-SNAPSHOT</version>
<packaging>pom</packaging>

<description>
Expand Down Expand Up @@ -52,22 +58,22 @@
<dependency>
<groupId>com.signalfuse.public</groupId>
<artifactId>signalfuse-protoc</artifactId>
<version>1.0-SNAPSHOT</version>
<version>0.0.6-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.signalfuse.public</groupId>
<artifactId>signalfuse-codahale</artifactId>
<version>1.0-SNAPSHOT</version>
<version>0.0.6-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.signalfuse.public</groupId>
<artifactId>signalfuse-commons-protoc-java</artifactId>
<version>1.0-SNAPSHOT</version>
<version>0.0.6-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.signalfuse.public</groupId>
<artifactId>signalfuse-java</artifactId>
<version>1.0-SNAPSHOT</version>
<version>0.0.6-SNAPSHOT</version>
</dependency>

<!-- ********************** -->
Expand Down Expand Up @@ -148,14 +154,38 @@
</dependencyManagement>

<build>
<pluginManagement>
<plugins>
<plugin>
<!--
Bugs in older versions prevent altReleaseDeploymentRepository
and altSnapshotDeploymentRepository from working correctly
https://maven.apache.org/plugins/maven-deploy-plugin/deploy-mojo.html
-->
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.1</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.2</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
Expand Down Expand Up @@ -184,6 +214,20 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
Expand Down
8 changes: 6 additions & 2 deletions signalfuse-codahale/pom.xml
Expand Up @@ -7,12 +7,12 @@
<parent>
<groupId>com.signalfuse.public</groupId>
<artifactId>clients-parent</artifactId>
<version>1-SNAPSHOT</version>
<version>0.0.6-SNAPSHOT</version>
</parent>

<artifactId>signalfuse-codahale</artifactId>
<name>Codahale to SignalFuse</name>
<version>1.0-SNAPSHOT</version>
<version>0.0.6-SNAPSHOT</version>
<packaging>jar</packaging>
<description>
Codahale yammer metrics plugin for signalfuse
Expand Down Expand Up @@ -53,6 +53,10 @@
<groupId>com.signalfuse.public</groupId>
<artifactId>signalfuse-protoc</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
Expand Down
@@ -0,0 +1,42 @@
package com.signalfuse.codahale.metrics;

import com.codahale.metrics.Counter;
import com.codahale.metrics.Gauge;

/**
* <p>
* Sometimes you want the rate of something like you would with a {@link Counter}, but you can't get
* individual events and instead must set a total "count" of events at some periodic rate. This
* class abstracts that out into a {@link Counter} that codahale can understand.
* <p/>
*/
public class CallbackCumulativeCounter extends Counter {
private final Callback callback;

public CallbackCumulativeCounter(Callback callback) {
this.callback = callback;
}

@Override public void inc() {
throw new UnsupportedOperationException("inc() on CallbackCumulativeCounter");
}

@Override public void inc(long n) {
throw new UnsupportedOperationException("inc() on CallbackCumulativeCounter");
}

@Override public void dec() {
throw new UnsupportedOperationException("dec() on CallbackCumulativeCounter");
}

@Override public void dec(long n) {
throw new UnsupportedOperationException("dec() on CallbackCumulativeCounter");
}

@Override public long getCount() {
return callback.getValue();
}

public interface Callback extends Gauge<Long> {
}
}
@@ -0,0 +1,18 @@
package com.signalfuse.codahale.metrics;

import com.codahale.metrics.Gauge;
import com.codahale.metrics.Metric;
import com.google.common.util.concurrent.AtomicDouble;

/**
* Same as {@link SettableLongGauge} but for a double
*/
public class SettableDoubleGauge implements Metric, Gauge<Double> {
private final AtomicDouble value = new AtomicDouble();
public void setValue(double value) {
this.value.set(value);
}
public Double getValue() {
return value.get();
}
}
@@ -0,0 +1,19 @@
package com.signalfuse.codahale.metrics;

import java.util.concurrent.atomic.AtomicLong;
import com.codahale.metrics.Gauge;
import com.codahale.metrics.Metric;

/**
* Works like a Gauge, but rather than getting its value from a callback, the value
* is set when needed. This can be somewhat convienent, but direct use of a Gauge is likely better
*/
public class SettableLongGauge implements Metric, Gauge<Long> {
private final AtomicLong value = new AtomicLong();
public void setValue(long value) {
this.value.set(value);
}
public Long getValue() {
return value.get();
}
}

0 comments on commit 381b490

Please sign in to comment.