Skip to content
Snippets Groups Projects
httpControllerClient.go 2.22 KiB
Newer Older
  • Learn to ignore specific revisions
  • 	"time"
    
    	"code.fbi.h-da.de/danet/quant/qkdnManager-simulator/config"
    
    	"github.com/google/uuid"
    
    const securityAlert = "securityAlert"
    const linkQuality = "linkQuality"
    
    
    func SetupControllerHTTPClients(conf *config.ControllerClients) {
    
    	httpCli := &http.Client{
    		Timeout: time.Duration(5) * time.Second,
    
    			if conf.RandDuration > 0 {
    				randNumber = conf.RandDuration
    
    			} else {
    				randNumber = 1
    			}
    
    			randAlert := time.Second * time.Duration(rand.IntN(randNumber))
    			time.Sleep(randAlert)
    
    
    			doUrlEncodedSecurityAlert(httpCli, conf)
    
    			doUrlEncodedLinkQuality(httpCli, conf)
    
    func doUrlEncodedSecurityAlert(httpCli *http.Client, conf *config.ControllerClients) {
    
    	status := getStatusSlice()[rand.IntN(len(getStatusSlice()))]
    
    
    	formBody := url.Values{
    
    		"ID":     []string{uuid.NewString()},
    		"status": []string{status},
    		"KMS_ID": []string{"ID HERE"}, // TODO: think of way to add real IDs here
    
    	req, err := buildUrlEncodedRequest(conf.QkdnAppAddress, conf.ClientTargets[securityAlert], formBody)
    
    
    	resp, err := httpCli.Do(req)
    	if err != nil {
    
    		logrus.Error(err)
    	} else {
    		body, err := io.ReadAll(resp.Body)
    		logrus.Infof("Body : %s, Err: %v", body, err)
    
    func doUrlEncodedLinkQuality(httpCli *http.Client, conf *config.ControllerClients) {
    
    	quality := getQualityString()[rand.IntN(len(getQualityString()))]
    
    	formBody := url.Values{
    		"ID":      []string{uuid.NewString()},
    		"KMS_ID":  []string{"ID HERE"}, // TODO: think of way to add real IDs here
    		"PeerID":  []string{"ID HERE"}, // TODO: think of way to add real IDs here
    		"quality": []string{quality},
    	}
    
    
    	req, err := buildUrlEncodedRequest(conf.QkdnAppAddress, conf.ClientTargets[linkQuality], formBody)
    
    	if err != nil {
    		logrus.Error(err)
    		return
    	}
    
    	resp, err := httpCli.Do(req)
    	if err != nil {
    		logrus.Error(err)
    	} else {
    		body, err := io.ReadAll(resp.Body)
    		logrus.Infof("Body : %s, Err: %v", body, err)
    	}
    }
    
    
    func getStatusSlice() []string {
    	return []string{"issue", "resolved"}
    }
    
    
    func getQualityString() []string {
    	return []string{"good", "ok", "bad"}
    }