Move Function and HTTPTrigger types to top level 'fission' package

This commit is contained in:
Soam Vasani
2016-09-09 15:04:15 -07:00
parent 796a9810a4
commit fb08d98037
8 changed files with 53 additions and 24 deletions
+3 -1
View File
@@ -22,12 +22,14 @@ import (
"net/http"
"net/http/httputil"
"net/url"
"github.com/platform9/fission"
)
type functionHandler struct {
fmap *functionServiceMap
poolManagerUrl string
Function
fission.Function
}
func (*functionHandler) getServiceForFunction() (*url.URL, error) {
+4 -3
View File
@@ -19,10 +19,11 @@ package router
import (
"log"
"net/http"
"testing"
// "net/http/httputil"
"net/http/httptest"
"net/url"
"testing"
"github.com/platform9/fission"
)
func createBackendService(testResponseString string) *url.URL {
@@ -48,7 +49,7 @@ func TestFunctionProxying(t *testing.T) {
backendURL := createBackendService(testResponseString)
log.Printf("Created backend svc at %v", backendURL)
fn := &Function{Name: "foo", Uid: "xxx"}
fn := &fission.Function{Name: "foo", Uid: "xxx"}
fmap := makeFunctionServiceMap()
fmap.assign(fn, backendURL)
+7 -5
View File
@@ -20,6 +20,8 @@ import (
"errors"
"log"
"net/url"
"github.com/platform9/fission"
)
type requestType int
@@ -36,7 +38,7 @@ type functionServiceMapResponse struct {
error
}
type functionServiceMapRequest struct {
Function
fission.Function
serviceUrl url.URL
requestType
responseChannel chan<- functionServiceMapResponse
@@ -48,7 +50,7 @@ type functionServiceMapEntry struct {
type functionServiceMap struct {
// map (funcname, uid) -> url
svc map[Function]functionServiceMapEntry
svc map[fission.Function]functionServiceMapEntry
currentGeneration uint64
requestChannel chan *functionServiceMapRequest
}
@@ -56,7 +58,7 @@ type functionServiceMap struct {
func makeFunctionServiceMap() *functionServiceMap {
fmap := &functionServiceMap{}
fmap.requestChannel = make(chan *functionServiceMapRequest)
fmap.svc = make(map[Function]functionServiceMapEntry)
fmap.svc = make(map[fission.Function]functionServiceMapEntry)
go fmap.functionServiceMapWork()
return fmap
}
@@ -87,7 +89,7 @@ func (fmap *functionServiceMap) functionServiceMapWork() {
}
}
func (fmap *functionServiceMap) lookup(f *Function) (*url.URL, error) {
func (fmap *functionServiceMap) lookup(f *fission.Function) (*url.URL, error) {
respChannel := make(chan functionServiceMapResponse)
fmap.requestChannel <- &functionServiceMapRequest{Function: *f, requestType: LOOKUP, responseChannel: respChannel}
resp := <-respChannel
@@ -98,7 +100,7 @@ func (fmap *functionServiceMap) lookup(f *Function) (*url.URL, error) {
}
}
func (fmap *functionServiceMap) assign(f *Function, serviceUrl *url.URL) {
func (fmap *functionServiceMap) assign(f *fission.Function, serviceUrl *url.URL) {
fmap.requestChannel <- &functionServiceMapRequest{Function: *f, serviceUrl: *serviceUrl, requestType: ASSIGN}
}
+3 -1
View File
@@ -19,11 +19,13 @@ package router
import (
"net/url"
"testing"
"github.com/platform9/fission"
)
func TestFunctionServiceMap(t *testing.T) {
m := makeFunctionServiceMap()
fn := &Function{Name: "foo", Uid: "012"}
fn := &fission.Function{Name: "foo", Uid: "012"}
u, err := url.Parse("/foo012")
if err != nil {
t.Errorf("can't parse url")
+3 -2
View File
@@ -18,6 +18,7 @@ package router
import (
"github.com/gorilla/mux"
"github.com/platform9/fission"
)
type HTTPTriggerSet struct {
@@ -25,11 +26,11 @@ type HTTPTriggerSet struct {
*mutableRouter
controllerUrl string
poolManagerUrl string
triggers []HTTPTrigger
triggers []fission.HTTPTrigger
}
func makeHTTPTriggerSet(fmap *functionServiceMap, controllerUrl string, poolManagerUrl string) *HTTPTriggerSet {
triggers := make([]HTTPTrigger, 1)
triggers := make([]fission.HTTPTrigger, 1)
return &HTTPTriggerSet{
functionServiceMap: fmap,
triggers: triggers,
-10
View File
@@ -47,16 +47,6 @@ import (
)
type (
Function struct {
Name string
Uid string
}
HTTPTrigger struct {
UrlPattern string
Function
}
options struct {
port int
poolManagerUrl string
+4 -2
View File
@@ -20,11 +20,13 @@ import (
"fmt"
"testing"
"time"
"github.com/platform9/fission"
)
func TestRouter(t *testing.T) {
fmap := makeFunctionServiceMap()
fn := &Function{Name: "foo", Uid: "xxx"}
fn := &fission.Function{Name: "foo", Uid: "xxx"}
testResponseString := "hi"
testServiceUrl := createBackendService(testResponseString)
@@ -33,7 +35,7 @@ func TestRouter(t *testing.T) {
triggers := makeHTTPTriggerSet(fmap, "", "")
triggerUrl := "/foo"
triggers.triggers = append(triggers.triggers, HTTPTrigger{triggerUrl, *fn})
triggers.triggers = append(triggers.triggers, fission.HTTPTrigger{triggerUrl, *fn})
port := 4242
go server(port, triggers)