From 73cfd49a17749ccb3f9b80a17079e4568c3f9626 Mon Sep 17 00:00:00 2001 From: Michele Date: Thu, 30 Mar 2017 16:27:03 +0200 Subject: [PATCH] memorizza il totale dello storage su variabile locale --- Docker/Dockerfile | 2 +- Docker/build.sh | 4 +++- consumer.go | 14 +++++++++++++- counter.go | 46 +++++++++++++++++++++++++++++++++++++++------- influxdb.go | 5 +++-- main.go | 6 +++--- 6 files changed, 62 insertions(+), 15 deletions(-) diff --git a/Docker/Dockerfile b/Docker/Dockerfile index aa2d096..54b5aad 100644 --- a/Docker/Dockerfile +++ b/Docker/Dockerfile @@ -2,6 +2,6 @@ FROM scratch MAINTAINER Michele Fadda "" -COPY quota_mongodb-v2.1.1 /bin/quota_mongodb +COPY quota_mongodb-v2.2.1 /bin/quota_mongodb ENTRYPOINT [ "/bin/quota_mongodb" ] diff --git a/Docker/build.sh b/Docker/build.sh index 0353839..5008ca4 100755 --- a/Docker/build.sh +++ b/Docker/build.sh @@ -1,3 +1,5 @@ #!/bin/bash -docker build -t mikif70/qmongo:2.1.1 . \ No newline at end of file +VER=$1 + +docker build -t mikif70/qmongo:$VER . diff --git a/consumer.go b/consumer.go index 598f205..9a69e30 100644 --- a/consumer.go +++ b/consumer.go @@ -31,6 +31,8 @@ func consumer() { for { + lstart := time.Now() + prod := <-consume status = _Consumer @@ -55,6 +57,16 @@ func consumer() { bulk.Insert(mquota) + counter <- Counterchan{ + tipo: "msg", + val: prod[p].messages, + } + + counter <- Counterchan{ + tipo: "storage", + val: prod[p].storage, + } + if opts.Test { log.Printf("OK: %s\n", prod[p].user) } @@ -71,7 +83,7 @@ func consumer() { } if opts.Debug { - fmt.Printf("CONS: users=%d in %v - active=%d\n", len(prod), time.Since(start), dbs.rdb.ActiveCount()) + fmt.Printf("CONS: users=%d in %v - active=%d\n", len(prod), time.Since(lstart), dbs.rdb.ActiveCount()) } wg.Done() diff --git a/counter.go b/counter.go index 0c9a9cc..529e854 100644 --- a/counter.go +++ b/counter.go @@ -13,13 +13,15 @@ type Counterchan struct { // Counter structure type Counter struct { - mu sync.Mutex - user int - insert int - err int - dup int - time time.Duration - wg int + mu sync.Mutex + user int + insert int + err int + dup int + time time.Duration + wg int + msg int + storage int } // NewCounter iniitialized Counter structure @@ -53,11 +55,25 @@ func (c *Counter) Run() { } case "err": c.addErr(tocount.val) + case "msg": + c.addMsg(tocount.val) + case "storage": + c.addStorage(tocount.val) } } } +// AddStorage +func (c *Counter) addStorage(add int) { + c.storage += add +} + +// AddMsg +func (c *Counter) addMsg(add int) { + c.msg += add +} + // AddUser increment number of users managed func (c *Counter) addUser() { c.user++ @@ -88,6 +104,22 @@ func (c *Counter) delWG() { c.wg-- } +// GetStorage +func (c *Counter) GetStorage() (ret int) { + c.mu.Lock() + defer c.mu.Unlock() + ret = c.storage + return +} + +// GetMsg +func (c *Counter) GetMsg() (ret int) { + c.mu.Lock() + defer c.mu.Unlock() + ret = c.msg + return +} + // GetUser return total users func (c *Counter) GetUser() (ret int) { c.mu.Lock() diff --git a/influxdb.go b/influxdb.go index 4ab845a..3003b2c 100644 --- a/influxdb.go +++ b/influxdb.go @@ -79,12 +79,13 @@ func writeStats() { return } - qtot := getStorage() + // qtot := getStorage() tags := map[string]string{"server": infhost, "domain": "quota"} fields := map[string]interface{}{ "user": count.GetUser(), - "storage": qtot, + "storage": count.GetStorage(), + "msg": count.GetMsg(), "stop": count.GetTime(), } pt, err := influxdb.NewPoint("qmongo", tags, fields, start) diff --git a/main.go b/main.go index 223d680..658b3ef 100644 --- a/main.go +++ b/main.go @@ -12,7 +12,7 @@ import ( ) const ( - _Version = "v2.1.1" + _Version = "v2.2.1" _Producer = 0 _Consumer = 1 ) @@ -115,8 +115,8 @@ func main() { count.SetTime(time.Since(start)) - fmt.Printf("Stop %v - user: %d\n\r", count.GetTime(), count.GetUser()) - log.Printf("Stop %v - user: %d\n\r", count.GetTime(), count.GetUser()) + fmt.Printf("Stop %v - user: %d - Storage: %d\n\r", count.GetTime(), count.GetUser(), count.GetStorage()) + log.Printf("Stop %v - user: %d - Storage: %d\n\r", count.GetTime(), count.GetUser(), count.GetStorage()) if opts.Influxdb != "" { writeStats()