diff --git a/.github/workflows/acceptance_tests.yml b/.github/workflows/acceptance_tests.yml index 8e8ec9d2f..e1cc28841 100644 --- a/.github/workflows/acceptance_tests.yml +++ b/.github/workflows/acceptance_tests.yml @@ -8,6 +8,9 @@ on: branches: - 'develop' +env: + MIZU_CI_IMAGE: mizu/ci:0.0 + jobs: run-acceptance-tests: name: Run acceptance tests @@ -21,6 +24,19 @@ jobs: - name: Check out code into the Go module directory uses: actions/checkout@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Build + uses: docker/build-push-action@v2 + with: + context: . + push: false + load: true + tags: ${{ env.MIZU_CI_IMAGE }} + cache-from: type=gha + cache-to: type=gha,mode=max + - name: Setup acceptance test run: ./acceptanceTests/setup.sh diff --git a/.github/workflows/acceptance_tests_on_pr.yml b/.github/workflows/acceptance_tests_on_pr.yml index 8fc357fba..d9ee4da0e 100644 --- a/.github/workflows/acceptance_tests_on_pr.yml +++ b/.github/workflows/acceptance_tests_on_pr.yml @@ -2,6 +2,9 @@ name: Acceptance tests on PR on: push +env: + MIZU_CI_IMAGE: mizu/ci:0.0 + concurrency: group: acceptance-tests-on-pr-${{ github.ref }} cancel-in-progress: true @@ -21,6 +24,19 @@ jobs: - name: Check out code into the Go module directory uses: actions/checkout@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Build + uses: docker/build-push-action@v2 + with: + context: . + push: false + load: true + tags: ${{ env.MIZU_CI_IMAGE }} + cache-from: type=gha + cache-to: type=gha,mode=max + - name: Setup acceptance test run: ./acceptanceTests/setup.sh diff --git a/acceptanceTests/setup.sh b/acceptanceTests/setup.sh index 3cec12efb..ef1836087 100755 --- a/acceptanceTests/setup.sh +++ b/acceptanceTests/setup.sh @@ -57,11 +57,16 @@ kubectl expose deployment rabbitmq --type=LoadBalancer --port=5672 -n mizu-tests echo "Starting proxy" kubectl proxy --port=8080 & -echo "Setting minikube docker env" -eval $(minikube docker-env) +if [[ -z "${CI}" ]]; then + echo "Setting env var of mizu ci image" + export MIZU_CI_IMAGE="mizu/ci:0.0" + echo "Build agent image" + docker build -t "${MIZU_CI_IMAGE}" . +else + echo "not building docker image in CI because it is created as separate step" +fi -echo "Build agent image" -docker build -t mizu/ci:0.0 . +minikube image load "${MIZU_CI_IMAGE}" echo "Build cli" cd cli && make build GIT_BRANCH=ci SUFFIX=ci diff --git a/acceptanceTests/testsUtils.go b/acceptanceTests/testsUtils.go index 8a1885369..245ccc201 100644 --- a/acceptanceTests/testsUtils.go +++ b/acceptanceTests/testsUtils.go @@ -212,9 +212,10 @@ func DeleteKubeFile(kubeContext string, namespace string, filename string) error } func getDefaultCommandArgs() []string { + agentImageValue := os.Getenv("MIZU_CI_IMAGE") setFlag := "--set" telemetry := "telemetry=false" - agentImage := "agent-image=mizu/ci:0.0" + agentImage := fmt.Sprintf("agent-image=%s", agentImageValue) imagePullPolicy := "image-pull-policy=IfNotPresent" headless := "headless=true" diff --git a/tap/tlstapper/tls_poller.go b/tap/tlstapper/tls_poller.go index a3d92f569..8b79a1ebe 100644 --- a/tap/tlstapper/tls_poller.go +++ b/tap/tlstapper/tls_poller.go @@ -6,6 +6,7 @@ import ( "fmt" "net" "sync" + "time" "encoding/binary" "encoding/hex" @@ -167,7 +168,8 @@ func dissect(extension *api.Extension, reader *tlsReader, isRequest bool, tcpid b := bufio.NewReader(reader) tcpReader := &api.TcpReader{ - Progress: reader.progress, + Progress: reader.progress, + CaptureTime: time.Now(), Parent: &api.TcpStream{ Origin: api.Ebpf, ProtoIdentifier: &api.ProtoIdentifier{}, diff --git a/ui-common/src/components/ServiceMapModal/ServiceMapModal.tsx b/ui-common/src/components/ServiceMapModal/ServiceMapModal.tsx index 266e1c108..3b93e379f 100644 --- a/ui-common/src/components/ServiceMapModal/ServiceMapModal.tsx +++ b/ui-common/src/components/ServiceMapModal/ServiceMapModal.tsx @@ -117,31 +117,32 @@ export const ServiceMapModal: React.FC = ({ isOpen, onClos .sort((a, b) => { return a.key.localeCompare(b.key) }); const getServicesForFilter = useMemo(() => { - const resolved = mapToKeyValForFilter(serviceMapApiData.nodes?.filter(x => x.resolved)) const unResolved = mapToKeyValForFilter(serviceMapApiData.nodes?.filter(x => !x.resolved)) return [...resolved, ...unResolved] }, [serviceMapApiData]) - const filterServiceMap = useCallback((newProtocolsFilters?: any[], newServiceFilters?: string[]) => { - const filterProt = newProtocolsFilters || checkedProtocols - const filterService = newServiceFilters || checkedServices - setCheckedProtocols(filterProt) - setCheckedServices(filterService) + useEffect(() => { const newGraphData: GraphData = { - nodes: serviceMapApiData.nodes?.map(mapNodesDatatoGraph).filter(node => filterService.includes(node.label)), - edges: serviceMapApiData.edges?.filter(edge => filterProt.includes(edge.protocol.abbr)).map(mapEdgesDatatoGraph) + nodes: serviceMapApiData.nodes?.map(mapNodesDatatoGraph).filter(node => checkedServices.includes(node.label)), + edges: serviceMapApiData.edges?.filter(edge => checkedProtocols.includes(edge.protocol.abbr)).map(mapEdgesDatatoGraph) } setGraphData(newGraphData); - }, [checkedProtocols, checkedServices, serviceMapApiData]) + }, [checkedServices, checkedProtocols, serviceMapApiData]) + const onProtocolsChange = (newProtocolsFiltersnewProt) => { + const filterProt = newProtocolsFiltersnewProt || checkedProtocols + setCheckedProtocols(filterProt) + } + const onServiceChanges = (newServiceFilters) => { + const filterService = newServiceFilters || checkedServices + setCheckedServices([...filterService]) + } useEffect(() => { - if (checkedServices.length > 0) - filterServiceMap() - else - filterServiceMap(checkedProtocols, getServicesForFilter.map(x => x.key).filter(serviceName => !Utils.isIpAddress(serviceName))) + if (checkedServices.length == 0) + setCheckedServices(getServicesForFilter.map(x => x.key).filter(serviceName => !Utils.isIpAddress(serviceName))) }, [getServicesForFilter]) useEffect(() => { @@ -177,14 +178,14 @@ export const ServiceMapModal: React.FC = ({ isOpen, onClos
+ checkedValues={checkedProtocols} setCheckedValues={onProtocolsChange} tableClassName={styles.filters} />
setServicesSearchVal(event.target.value)} />
filterServiceMap(null, newServicesForFilter)} /> + checkBoxWidth="5%" checkedValues={checkedServices} setCheckedValues={onServiceChanges} />