Skip to content

Instantly share code, notes, and snippets.

View olix0r's full-sized avatar
🍓

Oliver Gould olix0r

🍓
View GitHub Profile
@olix0r
olix0r / shutter.go
Last active June 17, 2016 20:35
A web server that occasionally closes connections (after serving 400).
package main
import (
"flag"
"fmt"
"math/rand"
"net/http"
"os"
)
@olix0r
olix0r / Cancellator.scala
Created September 8, 2016 02:17
Future cancellation by example
import com.twitter.conversions.time._
import com.twitter.finagle.util.DefaultTimer
import com.twitter.util._
import java.util.concurrent.atomic.AtomicInteger
import scala.util.control.NoStackTrace
object Cancellator {
class Cancelled(n: Int) extends NoStackTrace
@olix0r
olix0r / docker-compose.yml
Created December 1, 2016 08:34
linkerd + grpc + docker-compose
version: '2'
services:
l5d:
image: buoyantio/linkerd:nightly
container_name: l5d
ports:
- 4142:4142
- 9990:9990
@olix0r
olix0r / debughttpd.go
Created January 11, 2017 01:11
simple http debugging server
package main
import (
"flag"
"fmt"
"net/http"
"os"
)
func dieIf(err error) {
extern crate rand;
use rand::Rng;
use std::cell::RefCell;
use std::collections::HashMap;
use std::rc::Rc;
use std::thread;
use std::time::Duration;
fn main() {
/*
* check a condition asynchronously until it's true and then do another thing
*/
def checkCond: Future[Boolean] = ???
def doThing[T]: Future[T] = ???
implicit val timer = DefaultTimer.twitter
def untilCondition(backoff: Stream[Duration]): Future[Unit] =
checkCond.flatMap {
@olix0r
olix0r / StreamProxy.scala
Last active May 15, 2017 03:31
testing streaming
import com.twitter.concurrent.AsyncStream
import com.twitter.conversions.time._
import com.twitter.finagle._
import com.twitter.finagle.util.DefaultTimer
import com.twitter.io.{Buf, Reader}
import com.twitter.util._
object StreamProxy {
implicit val timer = DefaultTimer.twitter
@olix0r
olix0r / Authenticator.scala
Created October 25, 2016 19:01
jwt authentication service wrapper
case class AuthRequest(
loginEndpoint: String,
uid: String,
privateKey: String,
algorithm: JwtAlgorithm = JwtAlgorithm.RS256
) {
val path: String = new URL(loginEndpoint).getPath
val jwt: String = {
val token = Jwt.encode(s"""{"uid":"$uid"}""", privateKey, algorithm)
admin:
port: 9989
metricsIntervalSecs: 10
routers:
- label: default
interpreter:
kind: io.l5d.namerd.http
@olix0r
olix0r / dispatchq.rs
Created June 19, 2017 19:47
single-producer multi-consumer dispatch channel
use futures::{Future, Stream, Poll, Async, AsyncSink, Sink, StartSend};
use futures::unsync::{oneshot, mpsc};
use std::cell::RefCell;
use std::collections::VecDeque;
use std::rc::Rc;
/// Creates a dispatching channel.
///
/// This channel supports a single producer task and many consumers.
/// It is intended to be used by a producer task that pushes T-typed