This commit is contained in:
		
							parent
							
								
									96e07ece2d
								
							
						
					
					
						commit
						942fc79b7d
					
				
					 3 changed files with 110 additions and 0 deletions
				
			
		
							
								
								
									
										8
									
								
								.forgejo/workflows/succd.yaml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								.forgejo/workflows/succd.yaml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
on: [push]
 | 
			
		||||
jobs:
 | 
			
		||||
  test:
 | 
			
		||||
    runs-on: docker
 | 
			
		||||
    container: golang:1.23-bookworm
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - run: cd succbone/succd && ./ci.sh
 | 
			
		||||
							
								
								
									
										30
									
								
								succbone/succd/ci.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										30
									
								
								succbone/succd/ci.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,30 @@
 | 
			
		|||
#!/usr/bin/env bash
 | 
			
		||||
set -e
 | 
			
		||||
set -o pipefail
 | 
			
		||||
 | 
			
		||||
if [ ! -f go.mod ]; then
 | 
			
		||||
    echo "Script needs to be run with in succd directory."
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
echo "Running gofmt..."
 | 
			
		||||
GOFMT_OUT="$(gofmt -d $(find . -name '*.go'))"
 | 
			
		||||
if [ -n "$GOFMT_OUT" ]; then
 | 
			
		||||
    echo "gofmt generated differences, please run 'go fmt ./' and try again."
 | 
			
		||||
    echo "$GOFMT_OUT"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
echo "Running govet..."
 | 
			
		||||
GOVET_OUT="$(go vet ./)"
 | 
			
		||||
if [ -n "$GOVET_OUT" ]; then
 | 
			
		||||
    echo "go vet found the following errors:"
 | 
			
		||||
    echo "$GOVET_OUT"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
echo "Running tests..."
 | 
			
		||||
go test ./
 | 
			
		||||
 | 
			
		||||
echo "OK."
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										72
									
								
								succbone/succd/process_blocks_test.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								succbone/succd/process_blocks_test.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,72 @@
 | 
			
		|||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"math"
 | 
			
		||||
	"testing"
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestMomentaryOutput(t *testing.T) {
 | 
			
		||||
	mo := momentaryOutput{}
 | 
			
		||||
	mo.trigger()
 | 
			
		||||
	mo.process()
 | 
			
		||||
	if !mo.output {
 | 
			
		||||
		t.Fatalf("output didn't trigger")
 | 
			
		||||
	}
 | 
			
		||||
	mo.process()
 | 
			
		||||
	if !mo.output {
 | 
			
		||||
		t.Fatalf("output didn't keep triggered")
 | 
			
		||||
	}
 | 
			
		||||
	time.Sleep(time.Second)
 | 
			
		||||
	mo.process()
 | 
			
		||||
	if mo.output {
 | 
			
		||||
		t.Fatalf("output didn't untrigger")
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestThresholdOutput(t *testing.T) {
 | 
			
		||||
	to := thresholdOutput{
 | 
			
		||||
		threshold: 1,
 | 
			
		||||
	}
 | 
			
		||||
	to.process(0)
 | 
			
		||||
	if to.output {
 | 
			
		||||
		t.Fatalf("output shouldn't have triggered")
 | 
			
		||||
	}
 | 
			
		||||
	to.process(2)
 | 
			
		||||
	if !to.output {
 | 
			
		||||
		t.Fatalf("output should have triggered")
 | 
			
		||||
	}
 | 
			
		||||
	to.process(0)
 | 
			
		||||
	if !to.output {
 | 
			
		||||
		t.Fatalf("output should have triggered (in debounce)")
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestRingbufferInput(t *testing.T) {
 | 
			
		||||
	ri := ringbufferInput{
 | 
			
		||||
		limit: 3,
 | 
			
		||||
	}
 | 
			
		||||
	if ri.saturated() {
 | 
			
		||||
		t.Fatal("ringbuffer shouldn't be saturated yet")
 | 
			
		||||
	}
 | 
			
		||||
	ri.process(1)
 | 
			
		||||
	if ri.saturated() {
 | 
			
		||||
		t.Fatal("ringbuffer shouldn't be saturated yet")
 | 
			
		||||
	}
 | 
			
		||||
	ri.process(2)
 | 
			
		||||
	if ri.saturated() {
 | 
			
		||||
		t.Fatal("ringbuffer shouldn't be saturated yet")
 | 
			
		||||
	}
 | 
			
		||||
	ri.process(3)
 | 
			
		||||
	if !ri.saturated() {
 | 
			
		||||
		t.Fatalf("ringbuffer should be saturated")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if diff := math.Abs(float64(ri.avg) - 2); diff > 0.01 {
 | 
			
		||||
		t.Fatalf("ringbuffer avg should be ~2, is %f", ri.avg)
 | 
			
		||||
	}
 | 
			
		||||
	ri.process(10)
 | 
			
		||||
	if diff := math.Abs(float64(ri.avg) - 5); diff > 0.01 {
 | 
			
		||||
		t.Fatalf("ringbuffer avg should be ~5, is %f", ri.avg)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue