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

Restructure 2 #113

Merged
merged 219 commits into from
Dec 29, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
219 commits
Select commit Hold shift + click to select a range
ec9c038
Adding a MVP of ORTOA using TEEs
Sujaya Sep 22, 2023
d49c697
Update README.md
Sujaya Sep 25, 2023
602ab27
Adding client code
Sujaya Sep 28, 2023
e97529d
Merge branch 'ortoa-tee' of github.com:ySteinhart1/ORTOA into ortoa-tee
Sujaya Sep 28, 2023
fb861b8
ORTOA Housekeeping and Git Cleaning (#5)
jasondu7297 Oct 14, 2023
a725991
cmake!
adriandavila Oct 16, 2023
7c0e983
remove makefiles
adriandavila Oct 16, 2023
2bbdd0a
remove hanging comment
adriandavila Oct 16, 2023
dbf5362
update README
adriandavila Oct 16, 2023
1b0e152
remove redundant gitignores
adriandavila Oct 16, 2023
f9a87b0
Merge pull request #7 from ySteinhart1/adrian/cmake
adriandavila Oct 16, 2023
5810491
Add and use logger
adriandavila Oct 17, 2023
23be926
add formatting scripts
adriandavila Oct 17, 2023
7138cc2
update README
adriandavila Oct 17, 2023
5cf4922
update README
adriandavila Oct 17, 2023
03e5f75
move scripts
adriandavila Oct 17, 2023
99deed3
Merge pull request #9 from ySteinhart1/adrian/clang-format
adriandavila Oct 17, 2023
ea6725f
Merge pull request #8 from ySteinhart1/adrian/setup-logger
adriandavila Oct 17, 2023
367f819
data gen specification
adriandavila Oct 18, 2023
ba7b149
Merge pull request #11 from ySteinhart1/adrian/data-gen-specification
adriandavila Oct 18, 2023
c6e6965
Create docs folder, improve `DATA_GERNERATION` readme
adriandavila Oct 19, 2023
7002cca
update gitignore
adriandavila Oct 19, 2023
4a9078a
seed data generation
adriandavila Oct 19, 2023
555847c
file organization
adriandavila Oct 19, 2023
0b770ca
README for custom seed data generation
adriandavila Oct 19, 2023
d839160
random operation generation
adriandavila Oct 19, 2023
d3395f2
Add some sample data
adriandavila Oct 19, 2023
dc69050
add generations script wrappers in `ortoa-lib.sh`
adriandavila Oct 21, 2023
a413865
Merge pull request #14 from ySteinhart1/adrian/db-seed
adriandavila Oct 21, 2023
48c666b
update README that defines the standard
adriandavila Oct 22, 2023
fb1e0d1
update data generation
adriandavila Oct 22, 2023
e3c1710
generate samples
adriandavila Oct 22, 2023
391fa13
mistake in readme change
adriandavila Oct 22, 2023
dd741e0
Merge pull request #18 from ySteinhart1/adrian/datagen-modifications-…
adriandavila Oct 23, 2023
8c8b57b
discard old readme
adriandavila Oct 23, 2023
007a254
Merge pull request #19 from ySteinhart1/adrian/readme-improvements
adriandavila Oct 23, 2023
1d23879
RPC Client for Client-Host Communication (#6)
jasondu7297 Oct 23, 2023
677d71a
add scripts to run ORTOA
adriandavila Oct 25, 2023
c36f376
Merge pull request #21 from ySteinhart1/adrian/replace-make-targets-w…
adriandavila Oct 25, 2023
1ed03ce
group the OUTPUT of the thrift generation
adriandavila Oct 25, 2023
b72a902
Initialize Database with Seed Data (#20)
jasondu7297 Oct 25, 2023
c29ee3b
Merge pull request #22 from ySteinhart1/adrian/improve-thrift-cmake
adriandavila Oct 25, 2023
348f9a2
remove `client-run` and `simulate` make targets
adriandavila Oct 26, 2023
61227e3
move all cpp projects into a `src/` directory
adriandavila Oct 26, 2023
bf3b94d
delete unused `config.mk`
adriandavila Oct 26, 2023
3bcb2b0
move `dependencies.txt` into README
adriandavila Oct 26, 2023
ce70f93
move `ortoa.edl` into `src/` directory
adriandavila Oct 26, 2023
528017e
fixes
adriandavila Oct 26, 2023
788d6da
discard `common/` subdirectory in enclave
adriandavila Oct 26, 2023
f722a2c
update scripts
adriandavila Oct 26, 2023
534c169
some more fixes
adriandavila Oct 26, 2023
1413215
port 9090 in use?
adriandavila Oct 26, 2023
0c73a87
bring host port back to 9090
adriandavila Oct 26, 2023
4f80d27
Merge pull request #23 from ySteinhart1/adrian/cmake-plus-project-cle…
adriandavila Oct 26, 2023
61a46e8
update paths in sample commands
adriandavila Oct 26, 2023
8f485b6
Merge pull request #24 from ySteinhart1/readme-changes
adriandavila Oct 26, 2023
4f7a445
starting to define the interface
adriandavila Oct 28, 2023
4b6ce3d
add `.venv/` to gitignore
adriandavila Oct 28, 2023
67c87c3
start documenting python dependencies
adriandavila Oct 28, 2023
5902242
more work on defining the benchmark interface
adriandavila Oct 28, 2023
f15e07a
starting to define the benchmarking infrastructure
adriandavila Oct 28, 2023
c9d4a99
`isort` (python import sorting)
adriandavila Oct 28, 2023
e1f3d1e
building the skeleton for a `Job`
adriandavila Oct 29, 2023
000d8da
iterations on how to define experiments
adriandavila Oct 30, 2023
093fec7
collect paths to experiments
adriandavila Oct 30, 2023
463c983
function to load experiments from YAML
adriandavila Oct 30, 2023
3151bed
updates to the skeleton for `main` entrypoint to benchmarking
adriandavila Oct 30, 2023
45661a5
--initdb will always be true for experiments (for now)
adriandavila Oct 31, 2023
9d746cb
setting up the tests skeleton
adriandavila Oct 31, 2023
3950376
figuring out experiment data generation config
adriandavila Oct 31, 2023
3d9689a
testing deserialization of ByteSizeGeneratorConfig
adriandavila Oct 31, 2023
0a82935
fix interface tests
adriandavila Oct 31, 2023
12741ce
don't support range parameters for data generation (for now)
adriandavila Oct 31, 2023
313c422
xfail tests that check range parameters in data generation
adriandavila Oct 31, 2023
454b43e
add test for discriminating between datagen configs
adriandavila Oct 31, 2023
441a7f6
fix typing
adriandavila Oct 31, 2023
e97474c
test skeleton
adriandavila Oct 31, 2023
f4704ca
implement `generate_values` for parameters
adriandavila Oct 31, 2023
be2c607
more testing skeleton
adriandavila Oct 31, 2023
a4de23e
benchmarking infrastructure progress
adriandavila Oct 31, 2023
e6c2127
move `benchmark` into `extras/`
adriandavila Oct 31, 2023
fa0bda5
writing down my thoughts
adriandavila Oct 31, 2023
8a379db
fix python imports in benchmarking
adriandavila Oct 31, 2023
e3061a9
progress check-in
adriandavila Oct 31, 2023
3cf43ff
create testing script
adriandavila Oct 31, 2023
140a7c9
remove __init__.py files
adriandavila Oct 31, 2023
8fed374
move data generation into `extras/`
adriandavila Oct 31, 2023
337e12a
black formatting
adriandavila Oct 31, 2023
8a8ac22
fix python file names
adriandavila Oct 31, 2023
5dfc77b
refactor seed data generations
adriandavila Oct 31, 2023
3227e77
add `ortoa-test-python` script to documentation
adriandavila Oct 31, 2023
f68bbca
update gitignore
adriandavila Nov 1, 2023
343d781
refactor operation generation
adriandavila Nov 3, 2023
3ba07b6
data generation functionality in benchmarking
adriandavila Nov 3, 2023
9f49284
benchmarking progress
adriandavila Nov 4, 2023
4771e8d
`make_jobs`
adriandavila Nov 4, 2023
23291a5
fix imports
adriandavila Nov 5, 2023
d2e9bff
moving things
adriandavila Nov 5, 2023
04a6786
packaging the sdk
adriandavila Nov 5, 2023
4d7980c
bug fixes
adriandavila Nov 5, 2023
1a497a0
add benchmarking script help text to `ortoa-lib.sh`
adriandavila Nov 5, 2023
a975c8d
add instructions to install our python package
adriandavila Nov 5, 2023
e3a2e1f
add readme in the sdk
adriandavila Nov 5, 2023
0558f76
move tests location in sdk
adriandavila Nov 5, 2023
d2302f9
move experiments
adriandavila Nov 5, 2023
0db4def
debugging the orchestration
adriandavila Nov 5, 2023
e21b2f2
bug fixes
adriandavila Nov 6, 2023
6fc9fc5
output into an `out/` directory
adriandavila Nov 6, 2023
4b1ca47
every benchmark run will get its own output directory
adriandavila Nov 6, 2023
e79b367
remove icecream
adriandavila Nov 6, 2023
fd95a96
start the stats collection code
adriandavila Nov 6, 2023
eaab4e8
some more stats collection skeleton
adriandavila Nov 6, 2023
b7bb04a
remove comment made redundant by readable code
adriandavila Nov 6, 2023
3fd3fc1
cleanup
adriandavila Nov 6, 2023
08f742e
Seems like experiment collection -> job creation is working :)
adriandavila Nov 6, 2023
ae3f3ea
Benchmarking: Orchestration (#26)
adriandavila Nov 6, 2023
5eb4d00
Revert "Benchmarking: Orchestration (#26)" (#27)
adriandavila Nov 6, 2023
21e2a7e
change files
adriandavila Nov 6, 2023
1b58cef
Merge pull request #28 from ySteinhart1/adrian/benchmark
adriandavila Nov 6, 2023
2b714b6
correct output directories
adriandavila Nov 6, 2023
d1a09df
check in
adriandavila Nov 6, 2023
11db228
fix tests
adriandavila Nov 6, 2023
a16205e
yay, dependency management!
adriandavila Nov 6, 2023
2dd38be
system setup documentation
adriandavila Nov 7, 2023
05f4671
add redis setup instructions + README improvements
adriandavila Nov 7, 2023
689b36c
document `libsodium` dependency
adriandavila Nov 7, 2023
9bb4a45
properly add `hiredis` and `redis-plus-plus` dependencies in host `CM…
adriandavila Nov 7, 2023
3f6d8be
Merge pull request #29 from ySteinhart1/adrian/benchmarking-compilation
adriandavila Nov 7, 2023
53285a5
Update README.md
adriandavila Nov 7, 2023
9465f90
debugging linking redis libraries
adriandavila Nov 7, 2023
65461ef
Merge pull request #30 from ySteinhart1/adrian/benchmarking-compilation
adriandavila Nov 7, 2023
20aacfc
remove unused make target
adriandavila Nov 7, 2023
f9ad157
add `redis[hiredis]` dependency in sdk
adriandavila Nov 7, 2023
d4d71fd
flushdb in ClientJob
adriandavila Nov 7, 2023
f1d0244
rename
adriandavila Nov 7, 2023
291d2d4
fill in most of the ClientJob skeleton
adriandavila Nov 7, 2023
93767dd
add a call to source the scripts library
adriandavila Nov 7, 2023
8113374
add pandas dependency to pyproject
adriandavila Nov 7, 2023
02d2a62
debugging redis connection in sdk
adriandavila Nov 7, 2023
7be4e87
subprocess calls work!
adriandavila Nov 7, 2023
2814e22
update test sample yaml
adriandavila Nov 7, 2023
0266027
bugfixes for subprocess calls
adriandavila Nov 7, 2023
2227561
Merge pull request #31 from ySteinhart1/adrian/benchmarking-compilation
adriandavila Nov 7, 2023
01df0ad
Benchmarking: stats collection
adriandavila Nov 9, 2023
22c4cc6
Enhance ORTOA Client (#25)
jasondu7297 Nov 9, 2023
a0cd0d2
Use thread pool and simplify thrift (#35)
jasondu7297 Nov 15, 2023
c4c6ea2
Byte Size Experiment (#37)
adriandavila Nov 15, 2023
b9c40ff
fixed value generator (#39)
adriandavila Nov 18, 2023
4976bee
db size experiments (#40)
adriandavila Nov 18, 2023
3a52ec5
rename `byte_size_experiment` -> `byte_size_tests` (#41)
adriandavila Nov 18, 2023
99cd6d0
byte size experiment (#42)
adriandavila Nov 18, 2023
8a12464
improve client concurrency experiment (#43)
adriandavila Nov 18, 2023
d85a512
write percentage experiment (#44)
adriandavila Nov 18, 2023
c124086
fix client concurrency experiment dump (#45)
adriandavila Nov 18, 2023
ec43d1e
Address Multithreading Problems - Stream Data First (#46)
jasondu7297 Nov 18, 2023
c3a17b9
Address enclave and encryption nondeterministic bug (#47)
jasondu7297 Dec 12, 2023
c8d7b75
refactor stats collection (#48)
adriandavila Dec 12, 2023
af3d13b
fix percent write experiment and other misc changes (#49)
adriandavila Dec 12, 2023
88d1534
debug tool (#50)
adriandavila Dec 13, 2023
d7dd120
things were happening too fast (#51)
adriandavila Dec 13, 2023
5aa3773
import sorting script (#52)
adriandavila Dec 13, 2023
ad06786
black formatting for python (#53)
adriandavila Dec 13, 2023
24bb920
cleanup gitignore (#54)
adriandavila Dec 13, 2023
ec9ee25
slow down the benchmark (#55)
adriandavila Dec 14, 2023
0695a66
C++ build scripts (#56)
adriandavila Dec 14, 2023
8c8a66a
sort python imports (#58)
adriandavila Dec 14, 2023
8449805
Increase the number of host and enclave threads (#60)
jasondu7297 Dec 15, 2023
d6c1cb5
Fix Encryption Engine Non-Determinism (#57)
jasondu7297 Dec 15, 2023
70bbeec
Update Client Utilities (#61)
jasondu7297 Dec 15, 2023
7b27fd8
benchmarking readme cleanul (#62)
adriandavila Dec 15, 2023
cbdacf8
data dir restructure (#63)
adriandavila Dec 16, 2023
9293b06
add project description to readme (#64)
adriandavila Dec 16, 2023
14c0b6e
cmake: install targets (#66)
adriandavila Dec 16, 2023
74d02ce
Implement Warm-Up for Client-Host Communication (#59)
jasondu7297 Dec 17, 2023
bdc0cbd
Benchmarking: progress bar + save stdout & stderr in files (#68)
adriandavila Dec 17, 2023
0db4722
cmake: libstorage (#67)
adriandavila Dec 17, 2023
e079dba
secondary y axis label (#69)
adriandavila Dec 17, 2023
9d11d71
build documentation (#74)
adriandavila Dec 20, 2023
fa9134e
discard redis binary (#72)
adriandavila Dec 20, 2023
fea6a93
cmake: libcommon (#73)
adriandavila Dec 20, 2023
90111e9
add missing include guards + cleanup (#75)
adriandavila Dec 20, 2023
0b9bd22
cmake: cleanup client and host (#76)
adriandavila Dec 20, 2023
50f1db9
Update readme to include redis install
jasondu7297 Dec 20, 2023
fe99320
ld library path + script library cleanup (#77)
adriandavila Dec 20, 2023
724c78f
Change microseconds to milliseconds (#79)
jasondu7297 Dec 21, 2023
252c9e2
Introduce binary communication between client-host (#80)
jasondu7297 Dec 22, 2023
8f0ca1b
new host command (#83)
adriandavila Dec 23, 2023
0a741d3
Accommodate Enclave Hardware Non-Simulation Mode (#85)
jasondu7297 Dec 23, 2023
da39ecf
Use Custom Allocator for Multi-threaded Enclaves (#81)
jasondu7297 Dec 23, 2023
ad03938
set db size to 1 million in experiemnts (#84)
adriandavila Dec 23, 2023
7f7653e
save csv of data that produces graphs (#87)
adriandavila Dec 23, 2023
5d06aa1
format python files (#88)
adriandavila Dec 23, 2023
a25b6f1
audit python dependencies (#89)
adriandavila Dec 23, 2023
c4d5ee0
documentation (#90)
adriandavila Dec 23, 2023
b65dc71
storage interface (#91)
adriandavila Dec 23, 2023
f7eea98
remove fake host config (#92)
adriandavila Dec 24, 2023
245b899
[cleanup] imports (#93)
adriandavila Dec 27, 2023
0f1cfc7
160 byte experiments (#94)
adriandavila Dec 27, 2023
89af52f
Update StorageInterface and Redis Implementation (#96)
jasondu7297 Dec 28, 2023
336a15b
pre-generated seed (#95)
adriandavila Dec 28, 2023
ee1b6ea
Revert "pre-generated seed (#95)" (#97)
adriandavila Dec 28, 2023
10b57e7
speedup (#98)
adriandavila Dec 28, 2023
bd7cbea
fix (#99)
adriandavila Dec 28, 2023
a71be05
Optimize client by opening transport to host once (#70)
jasondu7297 Dec 28, 2023
3411dac
operations 1100 (#100)
adriandavila Dec 28, 2023
aa4dbe8
update experiment configurations (#101)
adriandavila Dec 28, 2023
cbdc8b5
Check Seed and Operations Files Exist (#102)
jasondu7297 Dec 28, 2023
502eb2d
Rename client_utils (#103)
jasondu7297 Dec 28, 2023
9294c29
typechecking python (#104)
adriandavila Dec 28, 2023
2a4fe6c
server location experiment (#105)
adriandavila Dec 28, 2023
51f3e27
format cpp (#106)
adriandavila Dec 28, 2023
66a4699
real world experiments (#107)
adriandavila Dec 29, 2023
f33a72b
benchmark docs (#109)
adriandavila Dec 29, 2023
5aea23d
delete unused files (#110)
adriandavila Dec 29, 2023
531938d
OpenEnclave install documentation (#108)
jasondu7297 Dec 29, 2023
af8a9bc
ortoa-tee folder
adriandavila Dec 29, 2023
d1b1075
Merge branch 'master' of github.com:ySteinhart1/ORTOA into restructure-2
adriandavila Dec 29, 2023
4b435b2
fix merge issue
adriandavila Dec 29, 2023
9b7c1ae
fix merge issue
adriandavila Dec 29, 2023
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
Prev Previous commit
Next Next commit
benchmark docs (#109)
* benchmark docs and cleanup

* file formatting
  • Loading branch information
adriandavila authored Dec 29, 2023
commit f33a72b2840901a70403ede1a04f1bedbbe2652f
26 changes: 26 additions & 0 deletions docs/BENCHMARK.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# ORTOA-TEE Benchmarking

```txt
usage: main.py [-h] [-e EXPERIMENTS [EXPERIMENTS ...]] [-d EXPERIMENT_DIRS [EXPERIMENT_DIRS ...]] [-w WORKING_DIR]

optional arguments:
-h, --help show this help message and exit
-w WORKING_DIR, --working-dir WORKING_DIR
Directory to use as base for experiment directory tree (default: out/benchmark-2023-12-29-11-38-05)

Experiments:
Options to control experiments selected for compilation

-e EXPERIMENTS [EXPERIMENTS ...], --experiments EXPERIMENTS [EXPERIMENTS ...]
List of experiments to compile (experiment name should match zoo object)
-d EXPERIMENT_DIRS [EXPERIMENT_DIRS ...], --experiment-dirs EXPERIMENT_DIRS [EXPERIMENT_DIRS ...]
List of local directories to use for experiment files
```

## Entrypoint

The main entry point is `extras/ortoa/benchmark/infrastructure/main.py`

## Jobs

The `ClientJob` class defined in `extras/ortoa/benchmark/infrastructure/jobs.py` implements the `JobProtocol` class. Most importantly, is specifies how a job is run.
10 changes: 5 additions & 5 deletions extras/ortoa/benchmark/infrastucture/experiment_collection.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ def model_post_init(self, __context: Any) -> None:
assert self.experiment_path.is_file()
return super().model_post_init(__context)


@classmethod
def construct_experiments(cls, experiment: Path) -> List[Self]:
"""
Expand All @@ -38,9 +37,7 @@ def from_path(cls, experiment: Path) -> List[Self]:

@classmethod
def from_dir(cls, experiment_dir: Path) -> List[Self]:
return [
cls(experiment_path=e) for e in experiment_dir.glob("**/*.yaml")
]
return [cls(experiment_path=e) for e in experiment_dir.glob("**/*.yaml")]


def collect_experiments(experiments: Iterable[Path]) -> List[ExperimentPath]:
Expand All @@ -49,6 +46,9 @@ def collect_experiments(experiments: Iterable[Path]) -> List[ExperimentPath]:
"""
return list(
itertools.chain.from_iterable(
[ExperimentPath.construct_experiments(experiment) for experiment in experiments]
[
ExperimentPath.construct_experiments(experiment)
for experiment in experiments
]
)
)
16 changes: 1 addition & 15 deletions extras/ortoa/benchmark/infrastucture/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,6 @@ def parse_args() -> argparse.Namespace:
required=False,
help="Directory to use as base for experiment directory tree (default: %(default)s)",
)
parser.add_argument(
"-m",
"--max-processes",
type=int,
default=None,
required=False,
help="Maximum number of processes to use when running experiments (default: %(default)s)",
)

args = parser.parse_args()

Expand All @@ -73,8 +65,6 @@ def parse_args() -> argparse.Namespace:
def benchmark(
experiment_base: Path,
experiment_names: List[Path],
max_processes: Optional[int] = None,
log_errors_in_main_thread: bool = False,
) -> Stats:
"""Main entrypoint to the benchmarking flow

Expand Down Expand Up @@ -110,8 +100,6 @@ def benchmark(
# Orchestrate and the jobs
orchestration = JobOrchestration(
jobs=jobs,
max_processes=max_processes,
log_errors_in_main_thread=log_errors_in_main_thread,
)
results = orchestration.run_sequential()

Expand All @@ -123,9 +111,7 @@ def main():
args = parse_args()
args.working_dir.mkdir(parents=True, exist_ok=True)

stats: Stats = benchmark(
args.working_dir, args.experiments + args.experiment_dirs, args.max_processes
)
stats: Stats = benchmark(args.working_dir, args.experiments + args.experiment_dirs)

stats.save_to(args.working_dir)

Expand Down
2 changes: 0 additions & 2 deletions extras/ortoa/benchmark/infrastucture/runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,6 @@ class Config:
arbitrary_types_allowed = True

jobs: Sequence[JobT]
max_processes: Optional[int]
log_errors_in_main_thread: bool = False

def model_post_init(self, __context: Any) -> None:
if len(self.jobs) == 0:
Expand Down
20 changes: 15 additions & 5 deletions extras/ortoa/benchmark/interface/experiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,11 +74,21 @@ def generate_data(self) -> None:
output_file,
)

if self.client_config.data.seed and not self.client_config.data.seed.exists():
raise FileNotFoundError(f"Seed file {self.client_config.data.seed} was not found.")
if (
self.client_config.data.seed
and not self.client_config.data.seed.exists()
):
raise FileNotFoundError(
f"Seed file {self.client_config.data.seed} was not found."
)

if self.client_config.data.operations and not self.client_config.data.operations.exists():
raise FileNotFoundError(f"Operations file {self.client_config.data.operations} was not found.")
if (
self.client_config.data.operations
and not self.client_config.data.operations.exists()
):
raise FileNotFoundError(
f"Operations file {self.client_config.data.operations} was not found."
)


def load_experiments(
Expand Down Expand Up @@ -133,7 +143,7 @@ def atomicize_experiments(experiments: List[Experiment]) -> List[AtomicExperimen
assert isinstance(experiment.client_config.data, SeedData)
assert experiment.client_config.data.seed is not None
assert experiment.client_config.data.operations is not None

all_client_flags = [
flag.get_atomic_flags() for flag in experiment.client_config.flags
]
Expand Down
2 changes: 2 additions & 0 deletions extras/ortoa/benchmark/interface/parameter.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
# Abstractions
##########################


class IntType(BaseModel):
type: Literal["int"] = Field(default="int", frozen=True)

Expand All @@ -32,6 +33,7 @@ class RangeParameter(Parameter, Generic[NumberT]):
# Parameter Types
##########################


class IntegerIncrementRange(RangeParameter[int], IntType):
step: int

Expand Down