Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quellcode-Bibliothek beacon-common.sub.js   Sprache: unbekannt

 
'use strict';

const EMPTY = 'empty';
const SMALL = 'small';
const LARGE = 'large';
const MAX = 'max';
const TOOLARGE = 'toolarge';

const STRING = 'string';
const ARRAYBUFFER = 'arraybuffer';
const FORM = 'form';
const BLOB = 'blob';

function getContentType(type) {
  switch (type) {
    case STRING:
      return 'text/plain;charset=UTF-8';
    case ARRAYBUFFER:
      return null;
    case FORM:
      return 'multipart/form-data';
    case BLOB:
      return null;
    default:
      throw Error(`invalid type: ${type}`);
  }
}

// Create a payload with the given size and type.
// `sizeString` must be one of EMPTY, SMALL, LARGE, MAX, TOOLARGE.
// `type` must be one of STRING, ARRAYBUFFER, FORM, BLOB.
// `contentType` is effective only if `type` is BLOB.
function makePayload(sizeString, type, contentType) {
  let size = 0;
  switch (sizeString) {
    case EMPTY:
      size = 0;
      break;
    case SMALL:
      size = 10;
      break;
    case LARGE:
      size = 10 * 1000;
      break;
    case MAX:
      if (type === FORM) {
        throw Error('Not supported');
      }
      size = 65536;
      break;
    case TOOLARGE:
      size = 65537;
      break;
    default:
      throw Error('invalid size');
  }

  let data = '';
  if (size > 0) {
    const prefix = String(size) + ':';
    data = prefix + Array(size - prefix.length).fill('*').join('');
  }

  switch (type) {
    case STRING:
      return data;
    case ARRAYBUFFER:
      return new TextEncoder().encode(data).buffer;
    case FORM:
      const formData = new FormData();
      if (size > 0) {
        formData.append('payload', data);
      }
      return formData;
    case BLOB:
      const options = contentType ? {type: contentType} : undefined;
      const blob = new Blob([data], options);
      return blob;
    default:
      throw Error('invalid type');
  }
}

function parallelPromiseTest(func, description) {
  async_test((t) => {
    Promise.resolve(func(t)).then(() => t.done()).catch(t.step_func((e) => {
      throw e;
    }));
  }, description);
}

// Poll the server for the test result.
async function waitForResult(id, expectedError = null) {
  const url = `/beacon/resources/beacon.py?cmd=stat&id=${id}`;
  for (let i = 0; i < 30; ++i) {
    const response = await fetch(url);
    const text = await response.text();
    const results = JSON.parse(text);

    if (results.length === 0) {
      await new Promise(resolve => step_timeout(resolve, 100));
      continue;
    }
    assert_equals(results.length, 1, `bad response: '${text}'`);
    const result = results[0];
    // null JSON values parse as null, not undefined
    assert_equals(result.error, expectedError, 'error recorded in stash');
    return result;
  }
  assert_true(false'timeout');
}

Messung V0.5
C=98 H=97 G=97

[ 0.22Quellennavigators  Projekt   ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge