Example #1
0
// getAddress gets the localhosts IPv4 address.
func GetAddress() (string, error) {
	name, err := os.Hostname()
	if err != nil {
		log.Print("Error Resolving Hostname:", err)
		return "", err
	}

	if ipv4host == "NONE" {
		as, err := net.LookupHost(name)
		if err != nil {
			return "", err
		}

		addr := ""

		for _, a := range as {
			log.Printf("a = %+v", a)
			if ipv4Reg.MatchString(a) {
				log.Print("matches")
				addr = a
			}
		}

		if addr == "" {
			err = errors.New("No IPv4 Address for Hostname")
		}
		return addr, err
	}
	return ipv4host, nil
}
Example #2
0
// GenerateAndSave - generates cert and key and saves them on your disk
func GenerateAndSave(name, organization string, validity time.Duration) (tlsc *tls.Certificate, err error) {
	x509c, priv, err := NewCertificatePair(name, organization, validity)
	if err != nil {
		log.Fatalf("Failed to generate certificate and key pair, got error: %s", err.Error())
	}

	certOut, err := os.Create("cert.pem")
	if err != nil {
		log.Errorf("failed to open cert.pem for writing: %s", err.Error())
		return
	}
	pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: x509c.Raw})
	certOut.Close()
	log.Print("cert.pem created\n")

	keyOut, err := os.OpenFile("key.pem", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
	if err != nil {
		log.Errorf("failed to open key.pem for writing: %s", err.Error())
		return
	}
	pem.Encode(keyOut, PemBlockForKey(priv))
	keyOut.Close()
	log.Print("key.pem created.\n")

	tlsc, err = GetTLSCertificate(x509c, priv, "hoverfly.proxy", validity)
	if err != nil {
		log.Errorf("failed to get tls certificate: %s", err.Error())
	}
	return
}
func spHandlerOpen(portname string, baud int, buftype string, isSecondary bool) {

	log.Print("Inside spHandler")

	var out bytes.Buffer

	out.WriteString("Opening serial port ")
	out.WriteString(portname)
	out.WriteString(" at ")
	out.WriteString(strconv.Itoa(baud))
	out.WriteString(" baud")
	log.Print(out.String())

	//h.broadcast <- []byte("Opened a serial port ")
	//h.broadcastSys <- out.Bytes()

	isPrimary := true
	if isSecondary {
		isPrimary = false
	}

	conf := &SerialConfig{Name: portname, Baud: baud, RtsOn: true}

	mode := &serial.Mode{
		BaudRate: baud,
		Vmin:     0,
		Vtimeout: 1,
	}

	sp, err := serial.OpenPort(portname, mode)
	log.Print("Just tried to open port")
	if err != nil {
		//log.Fatal(err)
		log.Print("Error opening port " + err.Error())
		//h.broadcastSys <- []byte("Error opening port. " + err.Error())
		h.broadcastSys <- []byte("{\"Cmd\":\"OpenFail\",\"Desc\":\"Error opening port. " + err.Error() + "\",\"Port\":\"" + conf.Name + "\",\"Baud\":" + strconv.Itoa(conf.Baud) + "}")

		return
	}
	log.Print("Opened port successfully")
	//p := &serport{send: make(chan []byte, 256), portConf: conf, portIo: sp}
	// we can go up to 256,000 lines of gcode in the buffer
	p := &serport{sendBuffered: make(chan Cmd, 256000), sendNoBuf: make(chan Cmd), portConf: conf, portIo: sp, BufferType: buftype, IsPrimary: isPrimary, IsSecondary: isSecondary}

	bw := &BufferflowDefault{}
	bw.Init()
	bw.Port = portname
	p.bufferwatcher = bw

	sh.register <- p
	defer func() { sh.unregister <- p }()
	// this is internally buffered thread to not send to serial port if blocked
	go p.writerBuffered()
	// this is thread to send to serial port regardless of block
	go p.writerNoBuf()
	p.reader()
	//go p.reader()
	//p.done = make(chan bool)
	//<-p.done
}
func (sh *serialhub) run() {

	log.Print("Inside run of serialhub")
	//cmdIdCtr := 0

	//s := ser.open()
	//ser.s := s
	//ser.write(s, []byte("hello serial data"))
	for {
		select {
		case p := <-sh.register:
			log.Print("Registering a port: ", p.portConf.Name)
			isPrimary := "false"
			if p.IsPrimary {
				isPrimary = "true"
			}
			h.broadcastSys <- []byte("{\"Cmd\":\"Open\",\"Desc\":\"Got register/open on port.\",\"Port\":\"" + p.portConf.Name + "\",\"IsPrimary\":" + isPrimary + ",\"Baud\":" + strconv.Itoa(p.portConf.Baud) + ",\"BufferType\":\"" + p.BufferType + "\"}")
			//log.Print(p.portConf.Name)
			sh.ports[p] = true
		case p := <-sh.unregister:
			log.Print("Unregistering a port: ", p.portConf.Name)
			h.broadcastSys <- []byte("{\"Cmd\":\"Close\",\"Desc\":\"Got unregister/close on port.\",\"Port\":\"" + p.portConf.Name + "\",\"Baud\":" + strconv.Itoa(p.portConf.Baud) + "}")
			delete(sh.ports, p)
			close(p.sendBuffered)
			close(p.sendNoBuf)
		case wrj := <-sh.writeJson:
			// if the user sent in the commands as json
			writeJson(wrj)

		case wr := <-sh.write:
			// if user sent in the commands as one text mode line
			write(wr, "")
		}
	}
}
Example #5
0
func init() {
	zookeeperHost := os.Getenv("ZOOKEEPER_TEST")
	if zookeeperHost == "" {
		log.Print("Please set up ZOOKEEPER_TEST variable")
		panic("No kafka host specify")
	}
	kafkaHost := os.Getenv("KAFKA_TEST")
	if kafkaHost == "" {
		log.Print("Please set up KAFKA_TEST variable")
		panic("No kafka host specify")
	}
	brokerList = append(brokerList, kafkaHost)
	topicsInit2 = append(topicsInit2, "test2")
	producer.NewProducer(brokerList, topicsInit2, config)
	configConsumer = consumergroup.NewConfig()
	consumerBrokerList = append(consumerBrokerList, zookeeperHost)
	consumer, _ = RegisterConsumer(&Consumer{
		Topic:        "test2",
		Group:        "test2",
		BrokerList:   consumerBrokerList,
		Config:       configConsumer,
		GetModel:     testModel,
		GetEventType: testEventName,
	})
	consumer.RegisterEvent("testEvent", &ProcessEvent{testProcess})
}
// HandleError parses an AWS error and exits the program
func HandleError(err error) {
	if err == nil {
		return
	}

	if awsErr, ok := err.(awserr.Error); ok {
		log.Print("Code: " + awsErr.Code())
		log.Print("Message: " + awsErr.Message())

		if awsErr.OrigErr() != nil {
			log.Printf("Orginal Error: %v", awsErr.OrigErr())
		}

		if reqErr, ok := err.(awserr.RequestFailure); ok {
			log.Printf("Status Code: %d", reqErr.StatusCode())

			if reqErr.RequestID() != "" {
				log.Print("Request ID: " + reqErr.RequestID())
			}
		}
	} else {
		log.Print(err.Error())
	}
	os.Exit(1)
}
Example #7
0
func newKubeClient() (*kclient.Client, error) {
	var (
		config    *restclient.Config
		err       error
		masterURL string
	)

	*argKubecfgFile = os.Getenv("KUBE_CFG_FILE")

	logrus.Print("kubeconfig: ", argKubecfgFile)

	if *argKubeMasterURL != "" {
		masterURL, err = expandKubeMasterURL()

		if err != nil {
			return nil, err
		}
	}

	if masterURL != "" && *argKubecfgFile == "" {
		config = &restclient.Config{
			Host: masterURL,
		}
	} else {
		overrides := &kclientcmd.ConfigOverrides{}
		overrides.ClusterInfo.Server = masterURL
		rules := &kclientcmd.ClientConfigLoadingRules{ExplicitPath: *argKubecfgFile}
		if config, err = kclientcmd.NewNonInteractiveDeferredLoadingClientConfig(rules, overrides).ClientConfig(); err != nil {
			return nil, err
		}
	}

	logrus.Print("Using ", config.Host, " for kubernetes master")
	return kclient.New(config)
}
Example #8
0
// listContainers handles and reply to http requests having the path "/containers"
func listContainers(w http.ResponseWriter, r *http.Request) {

	// answer right away to avoid dead locks in LUA
	io.WriteString(w, "OK")

	go func() {
		pods, err := client.Pods("default").List(kapi.ListOptions{})

		logrus.Print("made pods request")

		if err != nil {
			logrus.Println(err.Error())
			return
		}

		//images, err := DOCKER_CLIENT.ListImages(true)

		// if err != nil {
		// 	logrus.Println(err.Error())
		// 	return
		// }

		for i := 0; i < len(pods.Items); i++ {

			logrus.Print("got pod:", pods.Items[i].ObjectMeta.Name)

			id := pods.Items[i].ObjectMeta.Name
			//info := "" //, _ := DOCKER_CLIENT.InspectContainer(id)
			name := pods.Items[i].ObjectMeta.Name
			imageRepo := ""
			imageTag := ""

			// for _, image := range images {
			// 	if image.Id == info.Image {
			// 		if len(image.RepoTags) > 0 {
			// 			imageRepo, imageTag = splitRepoAndTag(image.RepoTags[0])
			// 		}
			// 		break
			// 	}
			// }

			data := url.Values{
				"action":    {"containerInfos"},
				"id":        {id},
				"name":      {name},
				"imageRepo": {imageRepo},
				"imageTag":  {imageTag},
				"running":   {"true"},
			}

			CuberiteServerRequest(data)

			// if info.State.Running {
			// 	// Monitor stats
			// 	DOCKER_CLIENT.StartMonitorStats(id, statCallback, nil)
			// }
		}
	}()
}
Example #9
0
func (c *Client) processReceive() {
	for {
		var data = make([]byte, 1024)
		size, err := c.conn.Read(data)
		if err != nil {
			log.Print(err.Error())
			return
		}
		if len(data) == 0 {
			log.Print("An error has occured")
			return
		}
		switch data[0] {
		case Input:
			if !c.api.PermitWrite {
				break
			}
			_, err := c.pty.Write(data[1:size])
			if err != nil {
				return
			}
		case Ping:
			_, err := c.conn.Write([]byte{Pong})
			if err != nil {
				log.Print(err.Error())
				return
			}
		case ResizeTerminal:
			var args argResizeTerminal
			err = json.Unmarshal(data[1:size], &args)
			if err != nil {
				log.Print("Malformed remote command %s %s", err, data[:size])
				return
			}
			window := struct {
				row uint16
				col uint16
				x   uint16
				y   uint16
			}{
				uint16(args.Rows),
				uint16(args.Columns),
				0,
				0,
			}
			syscall.Syscall(
				syscall.SYS_IOCTL,
				c.pty.Fd(),
				syscall.TIOCSWINSZ,
				uintptr(unsafe.Pointer(&window)),
			)
		default:
			log.Print("Unknown message type")
			return
		}
	}
}
Example #10
0
func run(cmd *cobra.Command, args []string) {
	log.Print("Reading config.toml file")
	err := viper.ReadInConfig()
	if err != nil {
		log.Fatal("Error reading config file: ", err)
	}

	var config config.Config
	err = viper.Unmarshal(&config)

	err = config.Validate()
	if err != nil {
		log.Fatal(err.Error())
		return
	}

	if migrateFlag {
		migrate(config)
		return
	}

	app, err = gateway.NewApp(config)

	if err != nil {
		log.Fatal(err.Error())
		return
	}

	app.Serve()
}
Example #11
0
// ProcessKafka consume th einformation from a topic kafka
func (objectConsumer *Consumer) ProcessKafka() {
	c := make(chan os.Signal, 1)
	signal.Notify(c, os.Interrupt)
	go func() {
		<-c
		if err := objectConsumer.Consumer.Close(); err != nil {
			sarama.Logger.Println("Error closing the consumer", err)
		}
	}()
	go func() {
		for err := range objectConsumer.Consumer.Errors() {
			log.Fatal(err)
		}
	}()
	for message := range objectConsumer.Consumer.Messages() {
		log.Print("Processing message with topic: ", message.Topic, " with partition: ", message.Partition, " and offset: ", message.Offset)
		model := objectConsumer.GetModel(message.Value)
		processEvent, err := objectConsumer.eventMap().Process(objectConsumer.GetEventType(model))
		if err != nil {
			log.Warn("unknow event found")
			continue
		}
		processEvent.ProcessData(model)
		time.Sleep(20 * time.Millisecond)
		objectConsumer.Consumer.CommitUpto(message)
	}
}
Example #12
0
func (i *Filter) capturePackets() {

	tchan := make(chan TimedRawPacket, 0)
	// XXX does this need a shutdown code path?
	go func() {
		for {
			rawPacket, captureInfo, err := i.packetDataSource.ReadPacketData()
			if err == io.EOF {
				log.Print("ReadPacketData got EOF\n")
				i.Stop()
				close(tchan)
				i.supervisor.Stopped()
				return
			}
			if err != nil {
				continue
			}
			tchan <- TimedRawPacket{
				Timestamp: captureInfo.Timestamp,
				RawPacket: rawPacket,
			}
		}
	}()

	for {
		select {
		case <-i.stopCaptureChan:
			return
		case t := <-tchan:
			i.decodePacketChan <- t
		}
	}
}
Example #13
0
func showUsage() {
	var usage string
	usage = `
Usage:
  main

Application Options:
    -r, --repo=         (required) target repository url - example format: https://github.com/nerdalert/plugin-watch.git
    -t, --time=         (requiredl) time in seconds between Git repository update checks.
    -c, --config-path=  (recommended: default: [ ./tmp/conf/ ]) path to config files.
    -b, --backup-path=  (recommended: default: [ data/snapshots ]) path to the backup endpoint config files.
    -s, --server=       (optional: default: [ data/endpoints ]) path to config files.
    -d, --daemon=       (optional:default [ true ]) run as a daemon. Alternatively could be run via a cron job.
    -l, --loglevel=     (optional:default [ info ]) set the logging level. Default is 'info'. options are [debug, info, warn, error].
    -h, --help    show app help.

Example daemon mode processing flows every 2 minutes:
	git-control -r github.com/plugin-watch -t 120 -l debug -r https://github.com/nerdalert/plugin-watch.git

Example run-once export:
    TODO:

Help Options:
  -h, --help    Show this help message
  `
	log.Print(usage)
}
Example #14
0
func ws() http.HandlerFunc {
	return func(w http.ResponseWriter, r *http.Request) {
		c, err := upgrader.Upgrade(w, r, nil)

		if err != nil {
			log.Print("upgrade:", err)
			return
		}
		defer c.Close()

		for {
			// Write
			err := c.WriteMessage(websocket.TextMessage, []byte("Hello, Client!"))
			if err != nil {
				log.Fatal(err)
			}

			// Read
			_, msg, err := c.ReadMessage()
			if err != nil {
				log.Fatal(err)
			}
			fmt.Printf("%s\n", msg)
		}
	}
}
Example #15
0
// DiscoverDirectors
func (s *State) DiscoverDirectors(localId string, events chan *DirectorEvent) {
	log.Print("Discovering other directors")

	updates := make(chan *etcd.Response)

	go func() {
		if _, err := s.etc.Watch(etcDirectorPrefix, 0, true, updates, nil); err != nil {
			log.WithError(err).Fatal("Failed to watch etc director prefix")
		}
	}()

	for res := range updates {
		node := idFromPath(res.Node.Key)

		if node == localId {
			// ignore events about ourself
			continue
		}

		events <- &DirectorEvent{
			Action: res.Action,
			Node:   node,
		}
	}
}
Example #16
0
func (list PortMapList) Add(portmap *PortMap) {
	if portmap != nil {
		list[portmap.Port] = portmap
	} else {
		log.Print("It is not possible to add an unspecified portmap(nil).")
	}
}
Example #17
0
func LineByLinePipe(cb func(string)) io.Writer {
	r, w, err := os.Pipe()
	if err != nil {
		panic(err)
	}
	pipeId := RandomNumericString(5)
	go func() {
		log.Printf("[pipe:%s] Pipe created", pipeId)
		reader := bufio.NewReader(r)
		msg := ""
		for {
			bytes, ispr, err := reader.ReadLine()

			if err != nil && err != io.EOF {
				panic(err)
			}

			msg += string(bytes)
			log.Print()
			if ispr {
				continue
			}
			line := msg
			msg = ""
			cb(line)

			if err == io.EOF {
				log.Printf("[pipe:%s] Pipe closed", pipeId)
				break
			}
		}
	}()
	return w
}
Example #18
0
// BuildNew checks what packages to build based on related repo and builds
// those that have been updated.
func (b *Builder) BuildNew(pkgs []string, aur *AUR) ([]*BuiltPkg, error) {
	// initialize pacman.conf with upstream repo
	err := b.setup()
	if err != nil {
		return nil, err
	}

	// make sure environment is up to date
	err = b.update()
	if err != nil {
		return nil, err
	}

	// get packages that should be built
	srcPkgs, err := b.getBuildPkgs(pkgs, aur)
	if err != nil {
		return nil, err
	}

	if len(srcPkgs) == 0 {
		log.Print("All packages up to date, nothing to build")
		return nil, nil
	}

	buildPkgs, err := b.buildPkgs(srcPkgs)
	if err != nil {
		return nil, err
	}

	successLog(buildPkgs)
	return buildPkgs, nil
}
Example #19
0
func main() {
	var err error

	serverAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:58672")
	if err != nil {
		logrus.Panicf("Error resolving UDP address with %v", err)
	}

	localAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:0")
	if err != nil {
		logrus.Panicf("Error resolving UDP address with %v", err)
	}

	UDPConn, err := net.DialUDP("udp", localAddr, serverAddr)
	if err != nil {
		logrus.Panicf("Error with dial UDP: %v", err)
	}

	defer UDPConn.Close()
	readBuf := make([]byte, UDPBufSize)
	for {
		read, err := UDPConn.Read(readBuf)
		if err != nil {
			logrus.Print("Read error: %v", err)
			continue
		}

		logrus.Printf("Readed bytes %d with message: %s", read, string(readBuf))
	}
}
Example #20
0
func wait() {
	term := make(chan os.Signal)
	signal.Notify(term, os.Interrupt, syscall.SIGTERM)
	select {
	case <-term:
		log.Print("Received SIGTERM, exiting ...")
	}
}
Example #21
0
func init() {
	kafkaHost := os.Getenv("KAFKA_TEST")
	if kafkaHost == "" {
		log.Print("Please set up KAFKA_TEST variable")
		panic("No kafka host specify")
	}
	brokerList = append(brokerList, kafkaHost)
	topicsInit = append(topicsInit, "test")
}
Example #22
0
func TestCheckArrayInterface(t *testing.T) {
	log.Print("TestCheckArrayInterface")
	convey.Convey("CheckMapInterfaceInterface(mapInterface) should be true", t, func() {
		convey.So(CheckArrayInterface(mapInterface), convey.ShouldEqual, false)
	})
	convey.Convey("CheckMapInterfaceInterface(arrayOfInterface) should be false", t, func() {
		convey.So(CheckArrayInterface(arrayOfInterface), convey.ShouldEqual, true)
	})
}
Example #23
0
func (a *Api) processReceive(conn *websocket.Conn, execId string, rwc io.WriteCloser) {
	for {
		var data = make([]byte, 1024)
		size, err := conn.Read(data)
		if err != nil {
			log.Print(err.Error())
			return
		}
		if len(data) == 0 {
			log.Print("An error has occured")
			return
		}
		log.Printf("read:%s\n", data[:size])
		switch data[0] {
		case Input:
			if !a.PermitWrite {
				break
			}
			_, err := rwc.Write(data[1:size])
			if err != nil {
				return
			}
		case Ping:
			_, err := conn.Write([]byte{Pong})
			if err != nil {
				log.Print(err.Error())
				return
			}
		case ResizeTerminal:
			var args argResizeTerminal
			err = json.Unmarshal(data[1:size], &args)
			if err != nil {
				log.Print("Malformed remote command %s %s", err, data[:size])
				return
			}
			if err := a.client.ExecResize(execId, int(args.Columns), int(args.Rows)); err != nil {
				log.Errorf("error resizing exec tty:url:%s %s %s", a.client.URL, err, execId)
			}
		default:
			log.Print("Unknown message type")
			return
		}
	}
}
Example #24
0
func ListenToSig() {
	c := make(chan os.Signal, 1)
	signal.Notify(c, syscall.SIGHUP, syscall.SIGINT)
	go func() {
		for _ = range c {
			log.Print("Shutting down...")
			Stop()
		}
	}()
}
Example #25
0
// Write packages built to the log.
func successLog(pkgs []*BuiltPkg) {
	var buf bytes.Buffer
	buf.WriteString("Built packages:")
	for _, pkg := range pkgs {
		buf.WriteString("\n * ")
		buf.WriteString(pkg.String())
	}

	log.Print(buf.String())
}
Example #26
0
func getBuildPkgsLog(msg string, pkgs []string) {
	var buf bytes.Buffer
	buf.WriteString(msg)
	for _, pkg := range pkgs {
		buf.WriteString("\n * ")
		buf.WriteString(pkg)
	}

	log.Print(buf.String())
}
Example #27
0
// addNext pops the first page off our doubly-linked-list and
// appends it to the reassembly-ring.
// Here we also handle the case where the connection should be closed
// by returning the bool value set to true.
func (o *OrderedCoalesce) addNext(nextSeq types.Sequence) (types.Sequence, bool) {
	if o.first == nil {
		panic("o.first is nil")
	}
	diff := nextSeq.Difference(o.first.Seq)
	if nextSeq == types.InvalidSequence {
		o.first.Skip = -1
	} else if diff > 0 {
		o.first.Skip = int(diff)
	}
	if o.first.End {
		o.freeNext()
		return -1, true // after closing the connection our Sequence return value doesn't matter
	}
	if len(o.first.Bytes) == 0 {
		o.freeNext()
		return nextSeq, false
	}
	// ensure we do not add segments that end before nextSeq
	diff = o.first.Seq.Add(len(o.first.Bytes)).Difference(nextSeq)
	if diff > 0 {
		o.freeNext()
		return nextSeq, false
	}
	if o.DetectCoalesceInjection && len(o.first.Bytes) > 0 {
		// XXX stream segment overlap condition
		if diff < 0 {
			p := types.PacketManifest{
				Timestamp: o.first.Seen,
				Payload:   o.first.Bytes,
				TCP: layers.TCP{
					Seq: uint32(o.first.Seq),
				},
			}
			event := injectionInStreamRing(&p, o.Flow, o.StreamRing, "coalesce injection", 0)
			if event != nil {
				o.log.Log(event)
			} else {
				log.Print("not an attack attempt; a normal TCP unordered stream segment coalesce\n")
			}
		}
	}
	bytes, seq := byteSpan(nextSeq, o.first.Seq, o.first.Bytes) // XXX injection happens here
	if bytes != nil {
		o.first.Bytes = bytes
		nextSeq = seq
		// append reassembly to the reassembly ring buffer
		if len(o.first.Bytes) > 0 {
			o.StreamRing.Reassembly = &o.first.Reassembly
			o.StreamRing = o.StreamRing.Next()
		}
	}
	o.freeNext()
	return nextSeq, false
}
Example #28
0
func main() {

	// Create k8s client
	kubeClient, err := newKubeClient()
	if err != nil {
		logrus.Fatal("Failed to create a kubernetes client:", err)
	}
	client = kubeClient

	// goproxy is executed as a short lived process to send a request to the
	// goproxy daemon process
	if len(os.Args) > 1 {
		// If there's an argument
		// It will be considered as a path for an HTTP GET request
		// That's a way to communicate with goproxy daemon
		if len(os.Args) == 2 {
			reqPath := "http://127.0.0.1:8000/" + os.Args[1]
			resp, err := http.Get(reqPath)
			if err != nil {
				logrus.Println("Error on request:", reqPath, "ERROR:", err.Error())
			} else {
				logrus.Println("Request sent", reqPath, "StatusCode:", resp.StatusCode)
			}
		}
		return
	}

	// start a http server and listen on local port 8000
	go func() {
		http.HandleFunc("/containers", listContainers)
		http.HandleFunc("/exec", execCmd)
		http.ListenAndServe(":8000", nil)
	}()

	logrus.Print("about to watch pods")
	podsStore = watchPods(kubeClient)
	logrus.Print("watching pods")
	// wait for interruption
	<-make(chan int)

	logrus.Print("eof")
}
Example #29
0
func TestCheckMapInterfaceInterface(t *testing.T) {
	log.Print("TesCheckMapInterfaceInterface")
	mapInterface = make(map[interface{}]interface{})
	convey.Convey("CheckMapInterfaceInterface(mapInterface) should be true", t, func() {
		convey.So(CheckMapInterfaceInterface(mapInterface), convey.ShouldEqual, true)
	})
	arrayOfInterface = make([]interface{}, 0)
	convey.Convey("CheckMapInterfaceInterface(arrayOfInterface) should be false", t, func() {
		convey.So(CheckMapInterfaceInterface(arrayOfInterface), convey.ShouldEqual, false)
	})
}
Example #30
0
// LoadConfig load configuration file
func LoadConfig(pathFile, fileName string) {
	if v == nil {
		v = viper.New()
		v.SetConfigName(fileName)
		v.AddConfigPath(pathFile)
		log.Print("Loading config file")
		err := v.ReadInConfig() // Find and read the config file
		if err != nil {         // Handle errors reading the config file
			log.Fatal(fmt.Errorf("Fatal error config file: %s \n", err))
		}
	}
}