llmongodb/main.go

89 lines
1.4 KiB
Go
Raw Normal View History

2015-07-09 17:50:13 +02:00
// llmongo.go
package main
import (
"flag"
"fmt"
2015-07-10 12:16:39 +02:00
"log"
2015-07-30 15:55:32 +02:00
"os"
"sync"
2015-07-10 14:35:35 +02:00
"time"
2015-07-09 17:50:13 +02:00
)
const (
_VERSION = "v2.2.1"
)
2015-07-09 17:50:13 +02:00
var (
opts = Options{
RedisTTL: time.Hour * 11688, // 16 mesi
LogFile: "log/llmongo.log",
2015-07-09 17:50:13 +02:00
}
loop = true
count = 0
errCount = 0
2015-11-20 15:23:12 +01:00
done = make(chan bool)
wg sync.WaitGroup
2015-11-20 15:23:12 +01:00
)
2015-07-09 17:50:13 +02:00
func main() {
flag.Usage = usage
2015-07-10 14:35:35 +02:00
flag.Parse()
2015-07-09 17:50:13 +02:00
if opts.Version {
fmt.Println(os.Args[0], _VERSION)
os.Exit(0)
}
2015-11-20 15:23:12 +01:00
defer close(done)
2015-11-20 15:23:12 +01:00
setTerm()
2015-11-19 17:12:53 +01:00
2015-07-10 12:16:39 +02:00
fs, err := os.OpenFile(opts.LogFile, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0666)
if err != nil {
fmt.Println("Log file error: ", err.Error())
os.Exit(-4)
}
2015-07-30 10:21:01 +02:00
defer fs.Close()
2015-07-10 14:35:35 +02:00
2015-07-10 12:16:39 +02:00
log.SetOutput(fs)
pid.Write(true)
defer pid.Remove()
2015-07-10 12:16:39 +02:00
start := time.Now()
fmt.Printf("Start: %+v\n", opts)
log.Printf("Start: %+v\n", opts)
2015-07-09 17:50:13 +02:00
dbs.poolRedis()
2015-07-30 10:21:01 +02:00
defer dbs.rdb.Close()
2015-07-09 17:50:13 +02:00
2015-07-30 10:21:01 +02:00
dbs.connectMongo()
defer dbs.mdb.Close()
2015-07-09 17:50:13 +02:00
if opts.Timeout > 0 {
time.AfterFunc(opts.Timeout, exit)
}
for i := 0; i < opts.Concurrent; i++ {
2015-11-20 15:23:12 +01:00
consume := make(chan produced)
remove := make(chan consumed)
// defer close(consume)
// defer close(remove)
2015-11-19 17:12:53 +01:00
2015-11-20 15:23:12 +01:00
go producer(consume, done)
go consumer(consume, remove)
go remover(remove)
2015-11-19 17:12:53 +01:00
}
2015-11-20 15:23:12 +01:00
<-done
wg.Wait()
2015-11-19 17:12:53 +01:00
fmt.Printf("Stop %v - login: %d - errors: %d - conn: %d\n\r", time.Since(start), count, errCount, dbs.rdb.ActiveCount())
log.Printf("Stop %v - login: %d - errors: %d - conn: %d\n\r", time.Since(start), count, errCount, dbs.rdb.ActiveCount())
2015-07-10 14:35:35 +02:00
}