Refactor caching in poolmgr
Move separate caches to one cache -- functionServiceCache. It can be looked up by function, can update atime by address, and can be deleted by podname. This removes the other caches. Some of the concurrency logic is still a bit hairy; it might be better not to use fission.Cache.
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
package poolmgr
|
||||
|
||||
import (
|
||||
"log"
|
||||
"testing"
|
||||
|
||||
"github.com/platform9/fission"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestFunctionServiceCache(t *testing.T) {
|
||||
fsc := MakeFunctionServiceCache()
|
||||
if fsc == nil {
|
||||
log.Panicf("error creating cache")
|
||||
}
|
||||
|
||||
var fsvc *funcSvc
|
||||
now := time.Now()
|
||||
|
||||
fsvc = &funcSvc{
|
||||
function: &fission.Metadata{
|
||||
Name: "foo",
|
||||
Uid: "1212",
|
||||
},
|
||||
environment: &fission.Environment{
|
||||
Metadata: fission.Metadata{
|
||||
Name: "foo-env",
|
||||
Uid: "2323",
|
||||
},
|
||||
RunContainerImageUrl: "fission/foo-env",
|
||||
},
|
||||
address: "xxx",
|
||||
podName: "yyy",
|
||||
ctime: now,
|
||||
atime: now,
|
||||
}
|
||||
err, _ := fsc.Add(*fsvc)
|
||||
if err != nil {
|
||||
fsc.Log()
|
||||
log.Panicf("Failed to add fsvc: %v", err)
|
||||
}
|
||||
|
||||
f, err := fsc.GetByFunction(fsvc.function)
|
||||
if err != nil {
|
||||
fsc.Log()
|
||||
log.Panicf("Failed to get fsvc: %v", err)
|
||||
}
|
||||
fsvc.atime = f.atime
|
||||
fsvc.ctime = f.ctime
|
||||
if *f != *fsvc {
|
||||
fsc.Log()
|
||||
log.Panicf("Incorrect fsvc \n(expected: %#v)\n (found: %#v)", fsvc, f)
|
||||
}
|
||||
|
||||
err = fsc.TouchByAddress(fsvc.address)
|
||||
if err != nil {
|
||||
fsc.Log()
|
||||
log.Panicf("Failed to touch fsvc: %v", err)
|
||||
}
|
||||
|
||||
err = fsc.DeleteByPod(fsvc.podName)
|
||||
if err != nil {
|
||||
fsc.Log()
|
||||
log.Panicf("Failed to delete fsvc: %v", err)
|
||||
}
|
||||
|
||||
_, err = fsc.GetByFunction(fsvc.function)
|
||||
if err == nil {
|
||||
fsc.Log()
|
||||
log.Panicf("found fsvc while expecting empty cache", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user