Coder Social home page Coder Social logo

cdperf's People

Contributors

butonic avatar d7oc avatar dragotin avatar fschade avatar individual-it avatar micbar avatar phil-davis avatar refs avatar rpocklin avatar scharfviktor avatar voroyam avatar wkloucek avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cdperf's Issues

Type error in share-with-new-user.js test

Infinite Scale 2.0.0-beta.7

root@oC-performance-test-INTEL ~/cdperf # ./scripts/cdperf --k6-scripts=tests/cdperf/issue-github-ocis-1399-share-with-new-user.js --cloud-docker-image=owncloud/ocis:latest@sha256:74fe1bf8b1067842bf0b987373626434ffb530e3829d671f9fb94631288cc435 --cloud-vendor=ocis --k6-test-host=https://localhost:9200 --k6-docker=false
Error: No such volume: ocis-config-k6

=========================================
 generated OCIS Config
=========================================
 configpath : /etc/ocis/ocis.yaml
 user       : admin
 password   : admin

docker.io/owncloud/ocis@sha256:74fe1bf8b1067842bf0b987373626434ffb530e3829d671f9fb94631288cc435: Pulling from owncloud/ocis
Digest: sha256:74fe1bf8b1067842bf0b987373626434ffb530e3829d671f9fb94631288cc435
Status: Image is up to date for owncloud/ocis@sha256:74fe1bf8b1067842bf0b987373626434ffb530e3829d671f9fb94631288cc435
2bbe6f65ea14bcb5e06c36c4cd60274f24e9c15bdf92f5069a0462d71e25763c
waiting for 'ocis' on 'https://localhost:9200'
waiting for 'ocis' on 'https://localhost:9200'

          /\      |‾‾| /‾‾/   /‾‾/   
     /\  /  \     |  |/  /   /  /    
    /  \/    \    |     (   /   ‾‾\  
   /          \   |  |\  \ |  (‾)  | 
  / __________ \  |__| \__\ \_____/ .io

  execution: local
     script: /root/cdperf/tests/cdperf/issue-github-ocis-1399-share-with-new-user.js
     output: -

  scenarios: (100.00%) 1 scenario, 3 max VUs, 1h0m30s max duration (incl. graceful stop):
           * default: 3 iterations shared among 3 VUs (maxDuration: 1h0m0s, gracefulStop: 30s)

ERRO[0041] TypeError: Cannot read property 'childNodes' of undefined
running at file:///root/cdperf/tests/cdperf/issue-github-ocis-1399-share-with-new-user.js:1:4080(130)
default at native  executor=shared-iterations scenario=default source=stacktrace
ERRO[0041] TypeError: Cannot read property 'childNodes' of undefined
running at file:///root/cdperf/tests/cdperf/issue-github-ocis-1399-share-with-new-user.js:1:4080(130)
default at native  executor=shared-iterations scenario=default source=stacktrace
ERRO[0041] TypeError: Cannot read property 'childNodes' of undefined
running at file:///root/cdperf/tests/cdperf/issue-github-ocis-1399-share-with-new-user.js:1:4080(130)
default at native  executor=shared-iterations scenario=default source=stacktrace

running (0h00m41.9s), 0/3 VUs, 3 complete and 0 interrupted iterations
default ✓ [======================================] 3 VUs  0h00m41.8s/1h0m0s  3/3 shared iters

     ✗ users create status is 200
      ↳  0% — ✓ 0 / ✗ 3
     ✓ dav create status is 201
     ✗ dav create status is 204
      ↳  0% — ✓ 0 / ✗ 3
     ✓ dav upload status is 201
     ✓ share create status is 200

     checks.......................................: 99.60% ✓ 1506      ✗ 6   
     cloud_default_play_dav_create_error_rate.....: 1      min=1       max=1 
     cloud_default_play_dav_create_trend..........: avg=265.06ms min=259.76ms med=266.85ms max=268.56ms p(90)=268.22ms p(95)=268.39ms
     cloud_default_play_dav_delete_trend..........: avg=0s       min=0s       med=0s       max=0s       p(90)=0s       p(95)=0s      
       { asset:KB10 }.............................: avg=0s       min=0s       med=0s       max=0s       p(90)=0s       p(95)=0s      
     cloud_default_play_dav_download_trend........: avg=0s       min=0s       med=0s       max=0s       p(90)=0s       p(95)=0s      
       { asset:KB10 }.............................: avg=0s       min=0s       med=0s       max=0s       p(90)=0s       p(95)=0s      
     cloud_default_play_dav_upload_trend..........: avg=80.15ms  min=51.53ms  med=80.09ms  max=200.06ms p(90)=93.4ms   p(95)=97.99ms 
       { asset:KB10 }.............................: avg=80.15ms  min=51.53ms  med=80.09ms  max=200.06ms p(90)=93.4ms   p(95)=97.99ms 
     cloud_default_play_share_create_trend........: avg=74.62ms  min=57.57ms  med=75.17ms  max=91.12ms  p(90)=87.93ms  p(95)=89.53ms 
     cloud_default_play_users_create_error_rate...: 1      min=1       max=1 
     cloud_default_play_users_create_trend........: avg=399.21ms min=394.72ms med=395.18ms max=407.73ms p(90)=405.22ms p(95)=406.48ms
     data_received................................: 940 kB 22 kB/s
     data_sent....................................: 16 MB  377 kB/s
     http_req_blocked.............................: avg=19.14µs  min=1.91µs   med=5.47µs   max=10.34ms  p(90)=6.64µs   p(95)=7.31µs  
     http_req_connecting..........................: avg=603ns    min=0s       med=0s       max=430.86µs p(90)=0s       p(95)=0s      
     http_req_duration............................: avg=81.14ms  min=51.53ms  med=80.12ms  max=407.73ms p(90)=93.77ms  p(95)=98.41ms 
       { expected_response:true }.................: avg=80.51ms  min=51.53ms  med=80.11ms  max=268.56ms p(90)=93.53ms  p(95)=98.23ms 
     http_req_failed..............................: 0.19%  ✓ 3         ✗ 1506
     http_req_receiving...........................: avg=93.93µs  min=27.36µs  med=93.14µs  max=914.09µs p(90)=118.31µs p(95)=126.41µs
     http_req_sending.............................: avg=126.17µs min=30.89µs  med=130.05µs max=511.95µs p(90)=146.52µs p(95)=159.41µs
     http_req_tls_handshaking.....................: avg=12.66µs  min=0s       med=0s       max=9.79ms   p(90)=0s       p(95)=0s      
     http_req_waiting.............................: avg=80.92ms  min=51.33ms  med=79.89ms  max=407.49ms p(90)=93.56ms  p(95)=98.18ms 
     http_reqs....................................: 1509   36.024807/s
     iteration_duration...........................: avg=41.44s   min=41.11s   med=41.37s   max=41.83s   p(90)=41.74s   p(95)=41.79s  
     iterations...................................: 3      0.07162/s
     vus..........................................: 3      min=3       max=3 
     vus_max......................................: 3      min=3       max=3 

2bbe6f65ea14`

K6 setup() execution timed out after 60 seconds

I ran login test with 100 vus using this command in readme:
docker run -e BASE_URL=https://cloud-domain.org:80 -e PLATFORM=ownCloudServer -e AUTH_ADAPTER=basicAuth -e ADMIN_LOGIN=main -e ADMIN_PASSWORD=secret --rm -i grafana/k6 run --vus 100 - < artifacts/koko-010-login.js

But I got this error about K6 timedout:
"level=error msg="setup() execution timed out after 60 seconds" hint="You can increase the time limit via the setupTimeout option"
image

Could you please fix this with timed out configuration ?

I also try to modified 010-login.ts file but don't know how to build that TS file in to JS file looks like the file in artifact folder.

Thanks!

Testcase failure: /plus/ prefix needed for all API requests

I have attempted to use this repository to run performance tests with out Owncloud 10.1.1 instance but realised the URL path attribute for all testcases is wrong for our installation, our path needs /plus/ prepended to all API requests (eg. download /remote.php/webdav/${path} => /plus/remote.php/webdav/${path}) for it to work.

I'm unsure if this is a common issue or specific to our case, would you accept a PR to include an optional prefix to the path URLs for API calls?

Upload should use the TUS protocol

Uploads currently use a simple Webdav PUT request to upload files. All clients use the TUS procotol for uploads, so the cdperf tools should use it, too.

See

cdperf/src/lib/api/dav.ts

Lines 120 to 133 in 3b88374

upload(id: string, path: string, data: ArrayBuffer, credential: Credential): Result {
const uploadResponse = http.request(
'PUT',
`${this.baseURL}/remote.php/dav/spaces/${id}/${path}`,
data,
buildParams({}, { credential }),
);
check(uploadResponse, {
'dav upload': ({ status }) => status === 201,
});
return { response: uploadResponse };
}

Extense cdperf tooling to allow parametrized starting of the ramp up tests

his is about extending the cdperf tooling

Tasks
[ ] create a framework for cdperf ramp-up tests allowing picking from different user personas
[ ] create a bash script to start cdperf parameters

Acceptance criteria
[ ] start cdperf and parse parameters specifing the persona and amount of personas the tests utilize
[ ] create an empty dummy persona (just doing propfinds)

Road to 2.0.0

Abstract

This issue lists all open and needed steps on the road to 2.0.0.
The roadmap could grow over time, no concrete release date so far.

Roadmap (1st [X] merged, 2nd [X] pr exists):

  • 2.0.0-rc.1
    • [X] make client use modern apis for ocis
    • [X] add surf test
    • [X] add oc share-upload-rename test
    • [X] rely on k6 only, get rid of cdperf bash script
  • 2.0.0-rc.2
    • [X] convert to mono repo
    • [X] add repo helper packages to build, lint, watch and setup tsconfig for the project more easy
    • [X] add test development toolkit package which abstracts away the client, utils and enpoints
    • [X] create dedicated tests package and ship the artifacts as part of it.
    • [X] add koko login test and depending apis
    • [X] add koko file tree navigation test and depending apis
    • [X] add koko upload delete test and depending apis
    • [X] add koko upload download test and depending apis
    • [X] add koko create and rename folder test and depending apis
    • [X] add showcase test to demonstrate tdk capabilities
    • [X] create readme for each test to provide information what the test does and how to use it
  • 2.0.0-rc.3
    • [X] add koko user group search and share test and depending apis
    • [X] add koko create space test and depending apis
    • [X] add koko add remove user share test and depending apis
    • [X] add koko search for filename test and depending apis
  • 2.0.0-rc.4
    • [X] cleanup tdk endpoints, the api's for oCis, occ and nc must be aligned
    • [X] cleanup tdk client, the api's for oCis, occ and nc must be aligned
    • [X] cleanup tdk utils
    • [X] cleanup tdk auth
    • [X] add basic tdk tests (vitest)
  • 2.0.0-rc.5
    • [x] refactor auth adapters and add keycloak compatible adapter
      #42
    • [x] automate doc gen (tsdoc, md, ...)
    • [x] introduce snipped's or workflow package (abstract away complex tasks like tag find or create, ...)
    • [x] review and cleanup written tests
    • [x] add ability to run k6 tests for only-office (websockets, ...)
      https://github.com/ONLYOFFICE/document-server-stress-testing/tree/develop/K6/7.3
    • add test to simulate ownCloud sync client
  • later
    • [ ] automate changelog gen
    • [ ] find solution to not rely on polling to find out if a resource is ready to use or not (ocis search indexing, ocis async uploads)
    • [ ] add custom xk6 package to be able to share big binary data between vu's, similar like k6 sharedArray but for bin data
    • [ ] use TUS for ocis file uploads
      #43
    • ...

Appendix

not sure what else is needed since the testing starts in the near future and we have to see whats missing or not... roadmap could extend depending on the results.

API Failure: Share with new user

I have attempted using a sharing test with our Owncloud 10.1.1 instance (which already works for create / upload testcases in this repository).

but consistently to receive a 401 Unauthorized response, even when the headers included a valid Authorization header (basic auth).

The following was the response body returned:

<?xml version="1.0"?>
<ocs>
    <meta>
        <status>failure</status>
        <statuscode>997</statuscode>
        <message>Unauthorised</message>
    </meta>
    <data/>
</ocs>

Testcase
Share with new user

By comparing the request with that in the Owncloud web user interface, the frontend is also sending the header
OCS-APIREQUEST: true

Once I change share.ts to include this header specifically, and re-compile and re-run, the test passes without any issue.

Is this required to be added to specific endpoints, or at a global level? I'm unsure why this is required in this case and wanted to confirm more details before submitting a PR.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.