Skip to content

Commit

Permalink
Refactor (#8)
Browse files Browse the repository at this point in the history
Refactor the application to make it simplier.

The point is to have a minimal core and multiple reusable plugins to add functionality.

- No bidirectional references between structs.
- Remove logic that can be built into a plugin (limiter)
- Safe use of channels
- Use interfaces to hide implementation
- Loosely coupled modules
  - Reporter
  - Pipeline 

Closes #6
  • Loading branch information
Bigomby committed Aug 2, 2016
1 parent a6a903f commit 983b9da
Show file tree
Hide file tree
Showing 19 changed files with 731 additions and 1,107 deletions.
17 changes: 10 additions & 7 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,21 @@ branches:
- develop

go:
- 1.5.2
- 1.5.4
- 1.6.3

script:
- $HOME/gopath/bin/goveralls

install:
- make get
- make get_dev
- go get github.com/mattn/goveralls
- go get github.com/go-playground/overalls
- go get -t ./...

script:
#- make check
- make test
- go test -v -race -cover ./...

after_script:
- make coverage
after_success:
- overalls -covermode=set -project=github.com/redBorder/rbforwarder
- go tool cover -func overalls.coverprofile
- goveralls -coverprofile=overalls.coverprofile -service=travis-ci
14 changes: 2 additions & 12 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -25,25 +25,15 @@ vet:

test:
@printf "$(MKL_YELLOW)Runing tests$(MKL_CLR_RESET)\n"
go test -cover ./...
go test -race ./...
@printf "$(MKL_GREEN)Test passed$(MKL_CLR_RESET)\n"

coverage:
@printf "$(MKL_YELLOW)Computing coverage$(MKL_CLR_RESET)\n"
@overalls -covermode=set -project=github.com/redBorder/rbforwarder
@go tool cover -func overalls.coverprofile
@goveralls -coverprofile=overalls.coverprofile -service=travis-ci
@rm -f overalls.coverprofile

get_dev:
@printf "$(MKL_YELLOW)Installing deps$(MKL_CLR_RESET)\n"
go get golang.org/x/tools/cmd/cover
go get github.com/kisielk/errcheck
go get github.com/stretchr/testify/assert
go get github.com/mattn/goveralls
go get github.com/axw/gocov/gocov
go get github.com/go-playground/overalls

get:
@printf "$(MKL_YELLOW)Installing deps$(MKL_CLR_RESET)\n"
go get -t ./...
go get -v ./...
78 changes: 0 additions & 78 deletions README.adoc

This file was deleted.

52 changes: 52 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
![](https://img.shields.io/packagist/l/doctrine/orm.svg?maxAge=2592000)
[![](https://travis-ci.org/redBorder/rbforwarder.svg?branch=master)](https://travis-ci.org/redBorder/rbforwarder)
[![](https://goreportcard.com/badge/github.com/redBorder/rbforwarder)](https://goreportcard.com/report/github.com/redBorder/rbforwarder)
[![](https://coveralls.io/repos/github/redBorder/rbforwarder/badge.svg?branch=master)](https://coveralls.io/github/redBorder/rbforwarder?branch=master)
[![](https://godoc.org/github.com/redBorder/rbforwarder?status.svg)](https://godoc.org/github.com/redBorder/rbforwarder)

# rbforwarder

**rbforwarder** is an extensible, protocol agnostic and easy to use tool for
process data. It allows you to create a custom pipeline in a modular way.

For example, you can read data from a Kafka broker and use **rbforwarder** to
build a **pipeline** that decodes the JSON, filter or add some fields, encodes
the data again to JSON and send it using using multiple protocols HTTP, MQTT,
AMQP, etc. It's easy to write a **component** for the pipeline.

## Features

- Support for multiple workers for every **component**.
- Support **buffer pooling**, for fine-grained memory control.
- Asynchronous report system. Different gorutine for send and receive responses.
- Built-in retry. The **rbforwarder** can retry messages on fail.

## Components

- Send data to an endpoint
- MQTT
- HTTP
- Fast HTTP
- Kafka
- Decoders / Encoders
- JSON
- Utility
- Limiter
- Metrics

## Road Map

_The application is being on hard developing, breaking changes expected._

|Milestone | Feature | Status |
|----------|---------------------|-----------|
| 0.1 | Pipeline | _Testing_ |
| 0.2 | Reporter | _Testing_ |
| 0.3 | Limiter | _Testing_ |
| 0.4 | HTTP component | _Testing_ |
| 0.5 | MQTT component | _Pending_ |
| 0.6 | JSON component | _Pending_ |
| 0.7 | Kafka component | _Pending_ |
| 0.8 | Metrics component | _Pending_ |
| 0.9 | Benchmarks | _Pending_ |
| 1.0 | Stable | _Pending_ |
Loading

0 comments on commit 983b9da

Please sign in to comment.