Skip to content

Commit

Permalink
Merge pull request owncloud#53 from owncloud/work-on-rc5
Browse files Browse the repository at this point in the history
prepare rc.5
  • Loading branch information
butonic authored Jun 26, 2023
2 parents 314b41b + c9564d5 commit 2c69ef0
Show file tree
Hide file tree
Showing 293 changed files with 87,535 additions and 6,045 deletions.
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -1 +1 @@
@fschade @micbar @refs @phil-davis
@fschade @micbar @dragotin @phil-davis
44 changes: 44 additions & 0 deletions .github/contributing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
## Submitting issues

If you have questions about how to install or use ownCloud, please direct these to our [forum][forum].
For getting in touch with the developers, join our public [RocketChat][rocketchat].

### Short version

* Submit your issue to our [issue tracker][tracker], but be aware of the different repositories. See the list below. Please always use the issue template when reporting issues.

### Guidelines
* Please search the existing issues first, it's likely that your issue was already reported or even fixed.
- Go to one of the repositories, click "issues" and type any word in the top search/command bar.
- You can also filter by appending e.g. "state:open" to the search string.
- More info on [search syntax within github](https://help.github.com/articles/searching-issues)
* __SECURITY__: Report any potential security bug to us via [our HackerOne page](https://hackerone.com/owncloud) or [email protected] following our [security policy](https://owncloud.org/security/) instead of filing an issue in our bug tracker
* This repository ([cdPerf](https://github.com/owncloud/cdperf/issues)) is *only* for issues within the cdPerf code.
* The issues in other components should be reported in their respective repositories:
- [web](https://github.com/owncloud/web/issues)
- [ownCloud Infinite Scale](https://github.com/owncloud/ocis/issues)
- [ownCloud Classic](https://github.com/owncloud/core/issues)
- [Android client](https://github.com/owncloud/android/issues)
- [iOS client](https://github.com/owncloud/ios-app)
- [Desktop client](https://github.com/owncloud/client/issues)
- [Documentation](https://github.com/owncloud/docs/issues)
- [ownCloud apps](https://github.com/owncloud/core/wiki/Apps)
* Submit your issue to our [issue tracker][tracker]. Please stick to our issue template, it includes all the information we need to track down the issue.

Help us to maximize the effort we can spend fixing issues and adding new features, by not reporting duplicate issues.

[tracker]: https://github.com/owncloud/cdperf/issues/new
[forum]: https://central.owncloud.org/
[rocketchat]: https://talk.owncloud.com/

## Contributing to Source Code

Thanks for wanting to contribute source code to ownCloud. That's great!

Before we're able to merge your code, you need to sign our [Contributor Agreement][agreement]. You can sign it digitally as soon as you open your first pull request.

In order to constantly increase the quality of our software we can no longer accept pull requests which submit un-tested code.
We have the goal that code segments are unit tested. Please try to help us with that goal. In some areas unit testing is hard
(aka almost impossible) as of today - in these areas refactoring WHILE fixing a bug is encouraged to enable unit testing.

[agreement]: https://owncloud.com/contribute/join-the-development/contributor-agreement/
37 changes: 37 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: deploy

on:
workflow_dispatch: {}
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: pnpm/action-setup@v2
with:
version: 7
- uses: actions/setup-node@v3
with:
node-version: 18
cache: pnpm
- run: pnpm install
- name: Build
run: pnpm run docs:build
- uses: actions/configure-pages@v2
- uses: actions/upload-pages-artifact@v1
with:
path: .vitepress/dist
- name: Deploy
id: deployment
uses: actions/deploy-pages@v1
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@
dist
lib
node_modules
cache
113 changes: 113 additions & 0 deletions .vitepress/config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
import {defineConfig} from 'vitepress';
import * as glob from 'fast-glob';
import * as path from 'path';
import {createRequire} from 'module'
import {lowerCase} from 'lodash';

// @ts-ignore
const require = createRequire(import.meta.url)
const pkg = require('../package.json')

const sidebarK6Tests = () => {

const testsNavigation = Object.values(glob.sync(['tests/**/*.md'], {
cwd: path.dirname(require.resolve('../packages/k6-tests/package.json'))
}).map(item => {
const info = path.parse(item)
const name = info.dir.split('/').slice(1).map(lowerCase).join(' / ')
return {text: '- ' + name, link: path.join('/k6-tests/', info.dir, info.name)}
}))

const srcNavigation = Object.values(glob.sync(['src/**/*.md'], {
cwd: path.dirname(require.resolve('../packages/k6-tests/package.json'))
}).map(item => {
const info = path.parse(item)
const name = [...info.dir.split('/').slice(1), info.name].map(lowerCase).join(' / ')
return {text: '- ' + name, link: path.join('/k6-tests/', info.dir, info.name)}
}))

return {
'/k6-tests/': [
{
text: 'Introduction',
collapsed: false,
items: [
{text: '- Welcome', link: '/k6-tests/docs/'},
{text: '- Considerations', link: '/k6-tests/docs/considerations'},
{text: '- Hot to run', link: '/k6-tests/docs/run'},
]
},
{
text: 'Src',
collapsed: false,
items: srcNavigation
},
{
text: 'Tests',
collapsed: false,
items: testsNavigation
},
],
}
}

const vitePressConfig = defineConfig({
lang: 'en-US',
title: 'cdPerf',
description: 'ownCloud cloud testing toolbox.',
lastUpdated: true,
cleanUrls: true,
base: '/cdperf/',
srcExclude: [
'README.md'
],
head: [
['meta', {name: 'theme-color', content: '#3c8772'}],
],

rewrites: {
'docs/(.*)': '(.*)',
'packages/:pkg/:ds(docs|tests|src)/(.*)': ':pkg/:ds/(.*)',
},

themeConfig: {
nav: [
{
text: 'Infinite Scale',
link: 'https://github.com/owncloud/ocis'
},
{
text: 'Web',
link: 'https://github.com/owncloud/web'
},
{
text: 'ownCloud',
link: 'https://owncloud.com/'
},
{
text: pkg.version,
items: [
{
text: 'Contributing',
link: 'https://github.com/owncloud/cdperf/blob/main/.github/contributing.md'
}
]
}
],

sidebar: {
...sidebarK6Tests()
},

socialLinks: [
{icon: 'github', link: 'https://github.com/owncloud/cdperf'}
],

footer: {
message: 'Released under the Apache-2.0 License.',
copyright: `Copyright (c) ${new Date().getFullYear()} ownCloud GmbH <https://owncloud.com>`
},
}
})

export default vitePressConfig
67 changes: 12 additions & 55 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,77 +1,34 @@
# ownCloud cloud testing toolbox

This repository contains the tools we use to test and measure the performance of different cloud systems.

Supported clouds are:
## Supported clouds
* [ownCloud Core](https://github.com/owncloud/core)
* [Infinite Scale](https://github.com/owncloud/ocis)
* [Nextcloud](https://github.com/nextcloud/server/)

## Requirements
* [K6](https://k6.io/) (if k6 should run on the host machine)

## Usage
cdPerf is a collection of ready to use scripts which can used via k6 as described.
[here](https://k6.io/docs/get-started/running-k6/).

## How to test
It's important to know how to compare the tests against each other and what those numbers mean.

**Please note the following points:**
* Only compare clouds if they run on the same host
* Try to run the cloud on a different host than the k6 test-runner
* Try to keep traffic on the hosts as low as possible while testing
* Don't compare clouds that run in docker against non dockerized clouds
* Docker for macs is slow on file operations compared to linux
* Sometimes it's possible that one of the clouds will fail on some operations. Keep in mind that it's not valid to compare a test with failures against a test where all checks are green

**Test setup at ownCloud:**

At ownCloud, k6 is used to compare the performance of the products during development. It is very helpful to understand how changes to the codebase affect the performance, between releases, but also between single commits.

The first test run, runs the tests on A which is testing a server on B and then B which is testing on A.
We collect those metrics over time to get indicators of how the performance changes over time (version to version) and how the clouds perform in comparison to each other.

**How to read the test results**
## Package Index

* Total time of execution
* This is the total elapsed time of the test for all users and iterations
* status
* Red || Green is a quick overview of how many requests failed or not

for a more detailed instruction how to read the results you should consider reading the k6 manual,
specially the [end of test](https://k6.io/docs/results-output/end-of-test/) section.

## Test Suits
* koko
* [010-login](packages/k6-tests/src/koko/010-login.md)
* [020-navigate-file-tree](packages/k6-tests/src/koko/020-navigate-file-tree.md)
* [040-upload-delete](packages/k6-tests/src/koko/040-upload-delete.md)
* [050-upload-download](packages/k6-tests/src/koko/050-upload-download.md)
* [060-create-rename-folder](packages/k6-tests/src/koko/060-create-rename-folder.md)
* oc
* [share-upload-rename](packages/k6-tests/src/oc/share-upload-rename.md)
* sample
* [kitchen-sink](packages/k6-tests/src/sample/kitchen-sink.md)
* surf
* [upload](packages/k6-tests/src/surf/upload.md)

## Details
Read more about [considerations](docs/considerations.md) of performance measurement.
A precise description of what a test does and what the requirements are can be found in the respective test folder.

## Dashboard
To visualize the test results, tools such as InfluxDB + Grafana are needed. To explain how the results can be visualized would go beyond the scope of this document and is also not the purpose of cdPerf. All necessary steps and a precise description of what is necessary can be found [here](https://k6.io/docs/results-output/real-time/).
* [k6-tdk](packages/k6-tdk): Test development kit, look here how to write tests.
* [k6-tests](packages/k6-tests): Ready to use k6 tests, If you want to start testing right away, look here.
* [eslint-config](packages/eslint-config): ESLint config shared across the packages, not public facing.
* [tsconfig](packages/tsconfig): TypeScript config shared across the packages, not public facing.
* [turbowatch](packages/turbowatch): Turbowatch config shared across the packages, not public facing.

## Security

If you find a security issue please contact [[email protected]](mailto:[email protected]) first

## Contributing

Fork -> Patch -> Push -> Pull Request

## License

Apache-2.0

## Dictonary

* **oCis**: [ownCloud Infinite Scale](https://github.com/owncloud/ocis)
* **k6-tdk**: k6 test development kit
* **cdPerf**: cloud performance
Expand Down
29 changes: 29 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
layout: home

title: cdPerf
titleTemplate: ownCloud cloud testing toolbox

hero:
name: cdPerf
text: ownCloud cloud testing toolbox
tagline: Tools we use to test and measure the performance of different cloud systems.
actions:
- theme: brand
text: Get Started
link: /k6-tests/docs/
- theme: alt
text: View on GitHub
link: https://github.com/owncloud/cdperf

features:
- icon: 🚀
title: K6 test scripts
details: Easy and simple to use k6 test scripts to test different cloud platforms.
link: /k6-tests/docs/
- icon: 📝
title: K6 test development kit
details: Simplifies the writing of tests and is compatible with several cloud platforms out of the box.
link: https://github.com/owncloud/cdperf/tree/main/packages/k6-tdk
---

21 changes: 14 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"version": "2.0.0-rc.2",
"version": "2.0.0-rc.5",
"private": true,
"homepage": "https://github.com/owncloud/cdperf",
"license": "AGPL-3.0",
Expand All @@ -9,20 +9,27 @@
"changeset": "changeset",
"changeset:publish": "changeset publish",
"changeset:version": "changeset version",
"clean": "turbo run clean --no-daemon --parallel && del-cli .pnpm-store node_modules",
"clean": "turbo run clean --no-daemon --parallel",
"dev": "ROARR_LOG=true turbo run dev --parallel --concurrency 64 --no-daemon | roarr",
"docs:build": "vitepress build",
"docs:dev": "vitepress dev",
"docs:preview": "vitepress preview",
"lint": "eslint package.json && syncpack list-mismatches && turbo run lint --no-daemon",
"lint:fix": "eslint package.json --fix && syncpack fix-mismatches && turbo run lint:fix --no-daemon",
"test": "turbo run test --no-daemon"
},
"devDependencies": {
"@algolia/client-search": "^4.17.2",
"@changesets/cli": "^2.26.1",
"@ownclouders/eslint-config": "workspace:*",
"@roarr/cli": "^5.11.0",
"del-cli": "^5.0.0",
"syncpack": "^9.8.4",
"turbo": "^1.9.1",
"typescript": "^5.0.4"
"@roarr/cli": "^5.12.3",
"@types/lodash": "^4.14.195",
"fast-glob": "^3.2.12",
"lodash": "^4.17.21",
"syncpack": "^10.6.1",
"turbo": "^1.10.3",
"typescript": "^5.1.3",
"vitepress": "1.0.0-beta.3"
},
"packageManager": "[email protected]",
"engines": {
Expand Down
4 changes: 0 additions & 4 deletions packages/esbuild/.eslintrc

This file was deleted.

13 changes: 0 additions & 13 deletions packages/esbuild/esbuild.mjs

This file was deleted.

Loading

0 comments on commit 2c69ef0

Please sign in to comment.