text: import { sleep, check, group } from 'k6';
  import { createBasicAuthClient } from './modules/client.js';
  
  export let options = {
    noCookiesReset: true
  };
  
  let endpoint = __ENV.URL || 'http://localhost:10080/grafana';
  const client = createBasicAuthClient(endpoint, 'user1', 'grafana');
  client.withOrgId(1);
  
  export const setup = () => {
    const adminClient = createBasicAuthClient(endpoint, 'admin', 'admin');
    let res = adminClient.datasources.getByName('gdev-prometheus');
    if (res.status !== 200) {
      throw new Error('Expected 200 response status when creating datasource');
    }
  
    return {
      datasourceId: res.json().id,
    };
  }
  
  export default (data) => {
    group("auth proxy test", () => {
      group("batch proxy requests", () => {
        const d = new Date();
        const batchCount = 300;
        const requests = [];
        const query = encodeURI('topk(5, max(scrape_duration_seconds) by (job))');
        const start = (d.getTime() / 1000) - 3600;
        const end = (d.getTime() / 1000);
        const step = 20;
  
        requests.push({ method: 'GET', url: '/api/annotations?dashboardId=8&from=1558670300607&to=1558691900607' });
  
        for (let n = 0; n < batchCount; n++) {
          requests.push({
            method: 'GET',
            url: `/api/datasources/proxy/${data.datasourceId}/api/v1/query_range?query=${query}&start=${start}&end=${end}&step=${step}`,
          });
        }
  
        let responses = client.batch(requests);
        for (let n = 0; n < batchCount; n++) {
          check(responses[n], {
            'response status is 200': (r) => r.status === 200,
          });
        }
      });
    });
  
    sleep(5)
  }
  
  export const teardown = (data) => {}
  