Skip to content
Draft
Show file tree
Hide file tree
Changes from 29 commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
6cbd1fd
L4-7 models
waseembaig Aug 29, 2022
a23befe
updated model
waseembaig Sep 8, 2022
a530881
Updated with model
waseembaig Sep 8, 2022
b5f4a54
Merge branch 'master' into Ixload-models
waseembaig Sep 9, 2022
084b9a4
updated with x-field-uid
waseembaig Sep 9, 2022
4d4f47b
updated with x-field-uid
waseembaig Sep 9, 2022
fea185c
Update auto generated content
actions-user Sep 9, 2022
edd99ca
L4-L7 approach 2
waseembaig Sep 19, 2022
4da8e6b
Update auto generated content
actions-user Sep 19, 2022
d25e0c9
L4-L7 model
waseembaig Sep 20, 2022
7673243
Merge branch 'Ixload-models' of https://github.com/open-traffic-gener…
waseembaig Sep 20, 2022
f4ad745
Revert "Merge branch 'Ixload-models' of https://github.com/open-traff…
waseembaig Sep 20, 2022
21d176d
Update auto generated content
actions-user Sep 20, 2022
098886b
L4-7 model
waseembaig Sep 20, 2022
24a27e9
Update auto generated content
actions-user Sep 20, 2022
8cb7990
L4-7 models
waseembaig Sep 20, 2022
51fab7a
Merge branch 'Ixload-models' of https://github.com/open-traffic-gener…
waseembaig Sep 20, 2022
18c5e63
Revert "Merge branch 'Ixload-models' of https://github.com/open-traff…
waseembaig Sep 20, 2022
d9e832a
updated methods
waseembaig Sep 20, 2022
375dbc2
updated methods
waseembaig Sep 20, 2022
e8994a8
concurrent_conn
waseembaig Sep 20, 2022
daf8f63
Updated with review comments
waseembaig92 Oct 19, 2022
9b43e80
updated
waseembaig Oct 19, 2022
78ed28f
update
waseembaig Oct 20, 2022
62e9162
Merge branch 'master' into Ixload-models
waseembaig Oct 20, 2022
a00158b
updated with review comments
waseembaig Oct 20, 2022
635c867
update_objectives
waseembaig Oct 20, 2022
b897b7f
update
waseembaig Oct 20, 2022
f5c76af
Update auto generated content
actions-user Oct 20, 2022
3ab6257
review comments updates
waseembaig Nov 14, 2022
b4b40d0
Merge branch 'Ixload-models' of https://github.com/open-traffic-gener…
waseembaig Nov 14, 2022
98b7894
updated with defaults
waseembaig Mar 20, 2023
e3b4a7f
Updated with defaults
waseembaig Mar 20, 2023
8c5bc80
updated models
waseembaig Mar 28, 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
39 changes: 39 additions & 0 deletions app/app.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
components:
schemas:
App:
description: >-
A container for emulated TCP/UDP , application protocols, attacks and it's traffic configurations.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's -> its

type: object
properties:
tcp:
description: >-
The properties of TCP and its children,
type: array
items:
$ref: './tcp/tcp.yaml#/components/schemas/App.Tcp'
x-field-uid: 1
http:
description: >-
The properties of HTTP and its children,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this just HTTP or also HTTPS? If it is also HTTPS then update comment to "HTTP(S)".

type: array
items:
$ref: './http/http.yaml#/components/schemas/App.Http'
x-field-uid: 2
ssl:
description: >-
SSL configuration
type: array
items:
$ref: './ssl/ssl.yaml#/components/schemas/App.Ssl'
x-field-uid: 3
statefull_flows:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo - should be stateful_flows

Copy link
Copy Markdown
Author

@waseembaig waseembaig Nov 14, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes to HTTP (to separate out client and server properties) are still pending.

@ankur-sheth updated the changes . Please review updated models: https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/Ixload-models/artifacts/openapi.yaml&nocors#tag/Configuration/operation/set_config

description: >-
Traffic configuration of endpoints.
type: array
items:
$ref: './statefull_flow/statefull_flow.yaml#/components/schemas/Statefull_flow'
x-field-uid: 4
name:
x-include: ../common/common.yaml#/components/schemas/Named.Object/properties/name
x-field-uid: 5
required: [name]
16 changes: 16 additions & 0 deletions app/http/http.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
components:
schemas:
App.Http:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Which properties are required? I don't think it is specified.

Copy link
Copy Markdown
Contributor

@ajbalogh ajbalogh Nov 10, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The http array seems redundant. It should be removed and two separate properties, an array of http_client and and array of http_server should be created.

@ajbalogh Updated the changes . Please review updated models: https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/Ixload-models/artifacts/openapi.yaml&nocors#tag/Configuration/operation/set_config

description: >-
Configurations of one or more HTTP client and server.
type: object
properties:
client:
$ref: './httpclient.yaml#/components/schemas/Http.Client'
x-field-uid: 1
server:
$ref: './httpserver.yaml#/components/schemas/Http.Server'
x-field-uid: 2



61 changes: 61 additions & 0 deletions app/http/httpclient.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
components:
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does it make sense to just have this wrap HttpClient.Client which is defined in the client.yaml file?

meaning, are there common client properties that we envision to be among all kinds of clients other than HTTP? If yes, that would go to client.yaml, but the httpclient specific options should just be in this file?

same comment for httpserver.yaml vs. server.yaml

schemas:
Http.Client:
description: >-
One or more HTTP Client configurations and its HTTP methods configs.
type: object
properties:
transport_name:
description: >-
Transport interface that can be attached to TCP. In the same apps or different apps container.
type: string
x-constraint:
- '/components/schemas/App.Tcp/properties/name'
x-field-uid: 1
http_version:
description: >-
HTTP Version
type: string
x-field-uid: 2
x-enum:
"v10":
x-field-uid: 1
"v11":
x-field-uid: 2
"v20":
x-field-uid: 3
default: "v10"
cookie_jar_size:
description: >-
cookie_jar_size the number of cookies that will be saved for each client. The maximum value of this is 300. (only if enable_cookie_support is enabled)
type: integer
default: 10
x-field-uid: 3
cookie_reject_probability:
description: >-
cookie_reject_probability indicates the probability, from 0 to 1, that a client will reject a request for a cookie(s) contents from the server. (only if enable_cookie_support is enabled)
type: integer
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be an integer or some other type?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated with boolean

default: 0
x-field-uid: 4
enable_cookie_support:
description: >-
The client will support cookie retention, as indicated in the cookie_jar_size and cookie_reject_probability
type: boolean
default: false
x-field-uid: 5
command_timeout:
description: >-
HTTP command timeout timer in seconds
type: number
default: 600
x-field-uid: 6
methods:
description: >-
The HTTP methods such as GET, POST and its properties.
type: array
items:
$ref: './method.yaml#/components/schemas/Http.Method'
x-field-uid: 10
name:
x-include: ../common/common.yaml#/components/schemas/Named.Object/properties/name
x-field-uid: 11
40 changes: 40 additions & 0 deletions app/http/httpserver.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
components:
schemas:
Http.Server:
description: >-
One or more HTTP Server configurations.
type: object
properties:
transport_name:
description: >-
Transport interface that can be attached to TCP. In the same apps or different apps container.
type: string
x-constraint:
- '/components/schemas/App.Tcp/properties/name'
x-field-uid: 1
http_version:
description: >-
HTTP Version
type: string
x-field-uid: 2
x-enum:
"v10":
x-field-uid: 1
"v11":
x-field-uid: 2
"v20":
x-field-uid: 3
default: "v10"
http_port:
description: >-
The port number to which the HTTP server will respond to non-SSL requests.
type: integer
default: 80
x-field-uid: 3
request_timeout:
description: >-
The amount of seconds that the server will wait for input on an open connection before closing the session with a 408 error.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The amount of seconds --> The number of seconds

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated in PR

type: integer
default: 300
x-field-uid: 4

53 changes: 53 additions & 0 deletions app/http/method.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
components:
schemas:
Http.Method:
type: object
properties:
choice:
type: string
default: get
x-field-uid: 1
x-enum:
get:
x-field-uid: 1
post:
x-field-uid: 2
get:
x-field-uid: 2
$ref: '#/components/schemas/Method.Get'
post:
x-field-uid: 3
$ref: '#/components/schemas/Method.Post'

Method.Get:
description: >-
A GET operation of HTTP client. Retrieves the page from the HTTP Server.
type: object
required: [server, page]
properties:
server:
description: >-
Server name/IP address
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The HTTP server name or IP address.

type: string
x-field-uid: 1
page:
description: >-
The page url/name to perform HTTP GET operation.
type: string
x-field-uid: 2
Method.Post:
description: >-
A POST operation of HTTP client. To post the data on HTTP Server.
type: object
required: [server, page]
properties:
server:
description: >-
Server name/IP address
type: string
x-field-uid: 1
page:
description: >-
The page url/name to perform HTTP POST operation.
type: string
x-field-uid: 2
13 changes: 13 additions & 0 deletions app/ssl/ssl.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
components:
schemas:
App.Ssl:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this a separate node and not a parameter within HTTP itself?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also does this enable ssl for all the http clients/servers in the app? Having it on the client/server itself would be more flexible?

description: >-
SSL configuration .
type: object
properties:
enable:
description: >-
Enable SSL for HTTP
type: boolean
default: false
x-field-uid: 1
22 changes: 22 additions & 0 deletions app/statefull_flow/client.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
components:
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

directory name statefull_flow -> stateful_flow

schemas:
Statefull_flow.Client:
Comment thread
waseembaig marked this conversation as resolved.
Outdated
description: >-
Client traffic configs.
type: object
properties:
endpoints:
description: >-
EndPoint configuration for one or more emulated apps.
type: array
items:
$ref: './endpoints.yaml#/components/schemas/Endpoints.Client'
x-field-uid: 1
protocol:
description: >-
Protocol to use for test, such as HTTP, TCP
type: string
x-constraint:
- '/components/schemas/App.Tcp/properties/name'
- '/components/schemas/App.Http/properties/name'
x-field-uid: 2
70 changes: 70 additions & 0 deletions app/statefull_flow/endpoints.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
components:
schemas:
Endpoints.Client:
description: >-
Endpoint configs for Client.
type: object
properties:
ip_interface_name:
description: >-
IPv4/v6 interface name, which is configured in devices.
type: string
x-constraint:
- '/components/schemas/Device.Ipv4Base/properties/name'
- '/components/schemas/Device.Ipv6Base/properties/name'
x-field-uid: 1
ports:
x-field-pattern:
description: >-
TCP port range
format: integer
length: 3
default: 80
features: [count]
x-field-uid: 2

Endpoints.Server:
description: >-
Endpoint configs for Server.
type: object
properties:
dest:
$ref: '#/components/schemas/Endpoints.Dest'
x-field-uid: 1
ports:
x-field-pattern:
description: >-
TCP port range
format: integer
length: 3
default: 80
features: [count]
x-field-uid: 2

Endpoints.Dest:
description: >-
Endpoint destination config for server.
type: object
properties:
choice:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

expand the choice to differentiate between ipv6_address and ipv4_address, the type will be string and the format will be ipv4 and ipv6 respectively

Copy link
Copy Markdown
Author

@waseembaig waseembaig Nov 14, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated in PR.

choice

type: string
default: name
x-field-uid: 1
x-enum:
name:
x-field-uid: 1
ip_address:
x-field-uid: 2
name:
description: >-
IPv4/v6 interface name
type: string
x-constraint:
- '/components/schemas/Device.Ipv4Base/properties/name'
- '/components/schemas/Device.Ipv6Base/properties/name'
x-field-uid: 2
ip_address:
description: >-
IPv4/v6 address
type: string
x-field-uid: 3
Loading