Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test unit test benchmark #118

Merged
merged 5 commits into from
Mar 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 27 additions & 26 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,26 @@ jobs:
fail-fast: false # we want all jobs to run, because they may fail independently
matrix:
include:
- name: SOM++
repo: SOMpp.git
apt: libcppunit-dev
build: "cmake . && make SOM++"
som: "./som.sh"
not-up-to-date: true

- name: CSOM
repo: CSOM.git
build: |
export COMPILER=gcc
export ARCH=64bit
make
som: "./som.sh"
not-up-to-date: true
# - name: SOM++
# repo: SOMpp.git
# apt: libcppunit-dev
# build: "cmake . && make SOM++"
# som: "./som.sh"
# not-up-to-date: true

# - name: CSOM
# repo: CSOM.git
# build: |
# export COMPILER=gcc
# export ARCH=64bit
# make
# som: "./som.sh"
# not-up-to-date: true

- name: JsSOM
repo: JsSOM.git
build: ""
som: "./som.sh"
som: "./som.sh"
not-up-to-date: true

- name: PySOM
Expand All @@ -39,7 +39,7 @@ jobs:

- name: SOM (Java)
build: make
som: ./som.sh
som: ./som.sh
repo: som-java.git
not-up-to-date: false

Expand All @@ -59,7 +59,7 @@ jobs:
not-up-to-date: false

- name: Specification Tests
som: spec
som: spec
not-up-to-date: false

- name: SOM-RS
Expand All @@ -69,17 +69,17 @@ jobs:
som-tests: " -c ../Smalltalk ../TestSuite -- TestHarness"
not-up-to-date: false

- name: ykSOM
repo: yksom.git
build: "cargo build"
som: "cargo run -- "
som-tests: "--cp ../Smalltalk ../TestSuite/TestHarness.som"
not-up-to-date: true
# - name: ykSOM
# repo: yksom.git
# build: "cargo build"
# som: "cargo run -- "
# som-tests: "--cp ../Smalltalk ../TestSuite/TestHarness.som"
# not-up-to-date: true

name: ${{ matrix.name }}
steps:
- name: Checkout SOM Repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Checkout SOM VM Repository
if: matrix.som != 'spec'
Expand Down Expand Up @@ -168,12 +168,13 @@ jobs:
run: |
cd som-vm
${{ matrix.som }} -cp ../Smalltalk:../TestSuite:../SomSom/src/compiler:../SomSom/src/interpreter:../SomSom/src/primitives:../SomSom/src/vm:../SomSom/src/vmobjects ../SomSom/tests/SomSomTests.som

- name: Test Unit Test Benchmark
if: ${{ matrix.repo == 'som-java.git' }}
run: |
cd Examples/Benchmarks/TestSuite
./duplicate-tests.sh
cd ../../../som-vm
${{ matrix.som }} -cp ../Smalltalk:../TestSuite ../Examples/Benchmarks/TestSuite/TestTestSuite.som
${{ matrix.som }} -cp ../Smalltalk:../Examples/Benchmarks/TestSuite ../Examples/Benchmarks/BenchmarkHarness.som --gc TestGC100 1 1
${{ matrix.som }} -cp ../Smalltalk:../Examples/Benchmarks/TestSuite ../Examples/Benchmarks/BenchmarkHarness.som Test100 1 1
8 changes: 4 additions & 4 deletions Examples/Benchmarks/TestSuite/TestCommon.som
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ TestCommon = Benchmark (
numExecs = (
self error: 'Implement in subclass and return the number of times a test is executed'
)

oneTimeSetup = (
"Load all Tests. We don't really want to benchmark the parser."
self tests
Expand Down Expand Up @@ -77,17 +77,17 @@ TestCommon = Benchmark (
runner run.
runner hasFailures ifTrue: [system exit: 1]
)

benchmark = (
failOnUnsupportedOptionals := false.
^ self runAllSuites
)

verifyResult: result = (
"result do: [:e | e println ]."
^ (result at: 1) = (190 * self numExecs) and: [
(result at: 2) = (0 * self numExecs) and: [
(result at: 3) = (189 * self numExecs) and: [
(result at: 3) = (190 * self numExecs) and: [
(result at: 4) = (992 * self numExecs)
] ] ]
)
Expand Down
30 changes: 30 additions & 0 deletions Examples/Benchmarks/TestSuite/TestTestSuite.som
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
TestTestSuite = TestHarness (
tests = ( "Now ordered by alphabetical order to improve maintainability"
^ Array1Test,
Block1Test,
Boolean1Test,
ClassLoading1Test,
ClassStructure1Test,
Closure1Test,
Coercion1Test,
CompilerReturn1Test,
Dictionary1Test,
DoesNotUnderstand1Test,
Double1Test,
Empty1Test,
Global1Test,
Hash1Test,
Integer1Test,
Preliminary1Test,
Reflection1Test,
SelfBlock1Test,
Set1Test,
SpecialSelectors1Test,
String1Test,
Super1Test,
Symbol1Test,
System1Test,
Vector1Test
)
)

40 changes: 20 additions & 20 deletions Examples/Benchmarks/TestSuite/VectorTest.som
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ VectorTest = TestCase (
self assert: 1 equals: v first ].

1 to: 10 do: [:i |
self assert: 1 equals: v first.
self assert: i equals: v first.
v removeFirst ]
)

Expand Down Expand Up @@ -148,7 +148,7 @@ VectorTest = TestCase (
self assert: 1 equals: (arr at: 1).
self assert: 2 equals: (arr at: 2).
)

testAsSet = (
| v set |
v := Vector new.
Expand All @@ -157,38 +157,38 @@ VectorTest = TestCase (
v append: 3.
v append: 4.
self assert: 4 equals: v size.

set := v asSet.
self assert: 4 equals: set size.

v append: 1.
v append: 1.
v append: 1.

self assert: 4 + 3 equals: v size.

set := v asSet.
self assert: 4 equals: set size.
)

testIsEmpty = (
| v |
v := Vector new.
self assert: v isEmpty.

v append: 1.
self deny: v isEmpty.

v removeFirst.
self assert: v isEmpty.

v append: #ee.
self deny: v isEmpty.

v removeFirst.
self assert: v isEmpty.
self assert: v isEmpty.
)

testRemoveObj = (
| v |
v := Vector new.
Expand All @@ -200,31 +200,31 @@ VectorTest = TestCase (
v append: #f.
v append: #g.
v append: #h.

self assert: 8 equals: v size.

self deny: (v remove: #aa).
self assert: (v remove: #e).
self assert: 7 equals: v size.
)

testAppendComma = (
| v |
v := Vector new.
v, #a.
v, #b.

self assert: 2 equals: v size.
self assert: (v contains: #a).
self assert: (v contains: #b).
)

testDoIndexes = (
| i v |
v := Vector new.
v doIndexes: [:j |
self assert: false ].

v appendAll: #(1 2 3 4 5).
i := 1.
v doIndexes: [:j |
Expand All @@ -233,7 +233,7 @@ VectorTest = TestCase (
].
self assert: 6 equals: i.
)

testDo = (
| i v |
v := Vector new.
Expand Down