[Agent] [Executor] 完成PipelineCommand part

This commit is contained in:
zeaslity
2023-10-18 10:39:38 +08:00
parent be01eb28a9
commit f31b303ff8
4 changed files with 151 additions and 25 deletions

View File

@@ -1,6 +1,12 @@
package executor
import "testing"
import (
"bytes"
"fmt"
"os/exec"
"strings"
"testing"
)
var closeSELinux = []string{
"sed",
@@ -19,6 +25,29 @@ var shutdownFirewalld = []string{
"systemctl", "stop", "firewalld", "&&", "systemctl", "disable", "firewalld",
}
var pipelineCommandFalse = []string{
"ls",
"/etc",
"|",
"grep",
"passwd",
}
var pipelineCommand = [][]string{
{
"cat",
"/home/wdd/IdeaProjects/ProjectOctopus/agent-go/executor/script/123",
},
{
"grep",
"passwd",
},
}
var pipelineCommandMore = "apt-cache madison docker-ce | awk {print$3} | cut -d: -f2"
var pipelineCommandThird = "ls /etc/ | grep passwd | head -2"
var pipelineCommandSecond = "systemctl status docker.service | grep active | wc -w"
var ifconfigCommand = []string{"ifconfig"}
func TestReadTimeOutput(t *testing.T) {
@@ -28,7 +57,7 @@ func TestReadTimeOutput(t *testing.T) {
}
func TestAllCommandExecutor(t *testing.T) {
ok, result := AllCommandExecutor(shutdownFirewalld)
ok, result := AllCommandExecutor(pipelineCommandFalse)
t.Logf("执行结果为 => %#v", ok)
t.Logf("执行日志为 => %#v", result)
@@ -41,8 +70,50 @@ func TestPureResultSingleExecute(t *testing.T) {
}
func TestPipelineCommandExecutor(t *testing.T) {
func TestPipelineCommandExecutorSingle(t *testing.T) {
PipelineCommandExecutor()
cmd1 := exec.Command("ls", "/etc/")
cmd2 := exec.Command("grep", "passwd")
var outputBuf1 bytes.Buffer
cmd1.Stdout = &outputBuf1
if err := cmd1.Start(); err != nil {
fmt.Printf("Error: The first command can not be startup %s\n", err)
return
}
if err := cmd1.Wait(); err != nil {
fmt.Printf("Error: Couldn't wait for the first command: %s\n", err)
return
}
cmd2.Stdin = &outputBuf1
var outputBuf2 bytes.Buffer
cmd2.Stdout = &outputBuf2
if err := cmd2.Start(); err != nil {
fmt.Printf("Error: The second command can not be startup: %s\n", err)
return
}
if err := cmd2.Wait(); err != nil {
fmt.Printf("Error: Couldn't wait for the second command: %s\n", err)
return
}
s := outputBuf2.String()
split := strings.Split(s, "\n")
BasicPrettyPrint(true, split)
}
func TestPipelineCommandExecutor(t *testing.T) {
//PipelineCommandExecutor(pipelineCommand)
pipelineStringToCommand := BasicTransPipelineCommand(pipelineCommandMore)
t.Logf("pipelineCommmand are => %#v", pipelineStringToCommand)
ok, resultLog := PipelineCommandExecutor(pipelineStringToCommand)
t.Logf("command execute ok is => %#v", ok)
t.Logf("command result are 下 \n")
BasicPrettyPrint(ok, resultLog)
}