Description
Currently when you export a result, then a yaml file is downloaded. This file doesn't support SMP.
It only follows SMP partially...
Expected Behavior
Exported yaml should follow SMP.
Screenshots

Click on download button
Environment:
[Optional] To Reproduce
Steps to reproduce the behavior:
[Optional] Additional Context
Currently results are downloaded in this format:-
start_time: 2020-04-02T03:43:59.524931729+05:30
end_time: 2020-04-02T03:44:09.526222812+05:30
exp_uuid: assafs-XXXX-XXXX-XXXX-XXXXXXXX
endpoint_url: http://10.0.2.15:31380/productpage
env:
kubernetes: v1.17.3
client:
connections: 5
rps: 1232.3408945620827
latencies_ms:
min: 0.000133302
average: 0.004056244610385397
p50: 0.002047835195530726
p90: 0.009221491228070174
p99: 0.025705645161290324
max: 0.243865731
metrics: {}
This result should follow https://github.com/layer5io/service-mesh-performance-specification/blob/master/smps.yaml
@vijcheru, would you like to take this issue up? I can help you if you want...
@vijcheru, would you like to take this issue up? I can help you if you want...
That would be fantastic. Our collaboration with Google on this spec will be advanced by work on this issue.
@leecalcote one approach to this is to store the result in some format, and then when downloading convert it to SMPS format. And the other is to store in meshery in the SMPS format. Which would be better? Also, another thing is that SMPS does not hold the details of the histogram.
@kushthedude can we push this item forward this week?
@utkarsh-pro and @NJnisarg, here you are.
I have identified the file/function to make changes to: https://github.com/layer5io/meshery/blob/master/models/load-test.go#L114 : ConvertToSpec()
I also had 2 questions:
1.) Is the spec mentioned in https://github.com/layer5io/meshery/blob/master/models/performance_spec.go up to date?
2.) Are all the metrics required by the spec being exposed by the load test results? (I did not see certain fields in the test result)
The following fields in the PerformanceSpec struct are not being filled out:
MeshBuild, ProxyBuild, ExpGroupUUID, ExpUUID, Profile, DetailsURI, Config, Metrics
How can we fill out structs like Metrics which are the largest ones. It would require a lot of information regarding the service mesh. Are there any APIs currently that expose that information? If no, then should we implement them in the adapters? @utkarsh-pro @leecalcote @abhishekkumkar
@NJnisarg, did you get the details you needed here?
So I did get a few APIs that give us the mesh information, but I think we need an API that gives us a view of the entire deployment and more information. For example, the following structs require extra information:
// IngressGateway - holds ingress gateway info
type IngressGateway struct {
Count int `yaml:"count,omitempty"`
CPUMCores float64 `yaml:"cpu_mCores,omitempty"`
MemMb float64 `yaml:"mem_mb,omitempty"`
Rps float64 `yaml:"rps,omitempty"`
Bps float64 `yaml:"bps,omitempty"`
}
// Sidecars - holds sidecars info
type Sidecars struct {
Count int `yaml:"count,omitempty"`
CPUMCores float64 `yaml:"cpu_mCores,omitempty"`
MemMb float64 `yaml:"mem_mb,omitempty"`
Rps float64 `yaml:"rps,omitempty"`
Bps float64 `yaml:"bps,omitempty"`
}
I was thinking of adding some function in kubernetes_scan.go file that can fetch this. Not fully sure though.
Also, I don't fully understand the fields in some of the structs. If someone who knows all the fields can help me a bit that would be nice.
@kalradev @dhruv0000 @kumarabd how close are we to having MeshSyncv2 APIs available?
@leecalcote is the meaning of these structs documented somewhere? Because even though the names are self-explanatory, it is a bit ambiguous. For example, CPUMCores, is it for the resource request or resource usage, also if it is usage, how do we consider the usage?
@kumarabd will you chime in here and point out the MeshSync v2 endpoints? Also, schedule a call with @NJnisarg and @vijcheru, if helpful?
@leecalcote By making the result follow SMP do we mean to populate all the fields present in performance_spec.go file? And then write this out accordingly to the YAML files?
Yes, that’s right.
On Mar 23, 2021, at 6:55 AM, Navendu Pottekkat @.*> wrote:

@leecalcote By making the result follow SMP do we mean to populate all the fields present in performance_spec.go file? And then write this out accordingly to the YAML files?—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.
SMPVersion string `yaml:"smp_version,omitempty"`
id string `yaml:"id,omitempty"`
labels map[string]string `yaml:"labels,omitempty"`
DetailsURI string `yaml:"details_uri,omitempty"`
TestID string `yaml:"test_id,omitempty"`
MeshConfigID string `yaml:"mesh_config_id,omitempty"`
EnvID string `yaml:"env_id,omitempty"`
Are these values exposed by any APIs?
The rest of the values in the struct are exposed and I have formatted them to follow SMP when we export to YAML file.

// @leecalcote @utkarsh-pro @abhishekkumkar
That’s good progress. You might refer to the endpoint spreadsheet in the community drive as an easy reference for identifying other APIs
Let me check if I can find it