Skip to content

Instantly share code, notes, and snippets.

@ryankennedy
ryankennedy / Audited.java
Created September 24, 2013 17:48
Example of adding audited REST endpoints to a Dropwizard service.
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Audited {
}
@ryankennedy
ryankennedy / VendorJsonProvider.java
Created May 16, 2012 05:05
Vendor JSON Provider for Jersey
package com.yammer.testvendor;
import com.yammer.dropwizard.jersey.JacksonMessageBodyProvider;
import com.yammer.dropwizard.json.Json;
import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
@ryankennedy
ryankennedy / proto_parse.feature
Last active September 6, 2017 05:19
Cucumber definition for a simple Protocol Buffer parsing test
Feature: Parsing Protocol Buffer schemas
Scenario: Parsing a valid Protocol Buffer schema
Given a Protocol Buffer schema named my_message.proto with body
"""
syntax = "proto3";
message MyMessage {
string message_content = 1;
}
@ryankennedy
ryankennedy / asmifier.c
Last active January 4, 2017 13:27
Quickly creating a command line utility to run ASMifier (http://asm.ow2.org/asm40/javadoc/user/org/objectweb/asm/util/ASMifier.html).
#include <stdio.h>
#include <errno.h>
int main(int argc, char* argv[]) {
int i;
char* argv2[argc+3];
argv2[0] = "java";
argv2[1] = "-cp";
argv2[2] = argv[0];
argv2[3] = "org.objectweb.asm.util.ASMifier";
@ryankennedy
ryankennedy / hw-base.txt
Created April 22, 2016 06:16
Benchmark results comparing the baseline TechEmpower Dropwizard code with a version packing an optimized Guava.
===============
Primer Requests
===============
Running 5s test @ http://localhost:9090/json
8 threads and 8 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 11.61ms 28.59ms 287.04ms 96.75%
Req/Sec 169.75 52.18 300.00 69.27%
Latency Distribution
50% 7.11ms
@ryankennedy
ryankennedy / json_bench.sh
Created April 22, 2016 05:16
Script that replicates the traffic being generated by the TechEmpower JSON serving benchmark.
#!/bin/sh
HOST=localhost
PORT=9090
URL=/json
CONTENT_TYPE_HEADER="application/json,text/html;q=0.9,application/xhtml+xml;q=0.9,application/xml;q=0.8,*/*;q=0.7"
CONNECTION_HEADER="Connection: keep-alive"
# Parameters:
@ryankennedy
ryankennedy / VendorJsonProvider.java
Created April 16, 2013 06:25
Brief exploration into what it takes to do vendor extensions in JAX-RS.
package com.yammer.testvendor;
import com.yammer.dropwizard.jersey.JacksonMessageBodyProvider;
import com.yammer.dropwizard.json.Json;
import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
@ryankennedy
ryankennedy / ab.log
Created October 23, 2015 05:28
ApacheBench SSL error
ab -c 1 -n 1 https://hw9j2li3ma.execute-api.us-east-1.amazonaws.com/prod/NodeSayHello
This is ApacheBench, Version 2.3 <$Revision: 1663405 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking hw9j2li3ma.execute-api.us-east-1.amazonaws.com (be patient)...SSL handshake failed (1).
10445:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-59/src/ssl/s23_clnt.c:593:
..done
@ryankennedy
ryankennedy / east_coast_nodejs_wrk.log
Last active October 23, 2015 05:20
AWS Lambda Latency
$ ./wrk -t 10 -c 50 -d 60s --latency --timeout 15s http://hw9j2li3ma.execute-api.us-east-1.amazonaws.com/prod/NodeSayHello
Running 1m test @ http://hw9j2li3ma.execute-api.us-east-1.amazonaws.com/prod/NodeSayHello
10 threads and 50 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 3.22ms 3.93ms 206.21ms 93.68%
Req/Sec 1.72k 366.83 2.19k 83.31%
Latency Distribution
50% 2.34ms
75% 2.59ms
90% 4.61ms
import io.dropwizard.Application;
import io.dropwizard.setup.Environment;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import java.util.UUID;
public class TestUuidApplication extends Application<TestUuidConfiguration> {