Buckets:
| // Copyright 2021 The Emscripten Authors. All rights reserved. | |
| // Emscripten is available under two separate licenses, the MIT license and the | |
| // University of Illinois/NCSA Open Source License. Both these licenses can be | |
| // found in the LICENSE file. | |
| // This file defines fuzzer workloads which primarily fuzz multi-threaded | |
| // operations. | |
| namespace wasmfs { | |
| // This abstract class defines a fuzzer workload. It sets up a series of file | |
| // system operations and then validates that the expected outcome is observed. | |
| class Workload { | |
| public: | |
| Workload(Random& rand) : rand(rand) {} | |
| virtual ~Workload() = default; | |
| // This function generates a workload based on a Random seed. It will test a | |
| // file system property, using any required syscalls. | |
| virtual void execute() = 0; | |
| protected: | |
| Random& rand; | |
| }; | |
| // This workload class attempts to fuzz for tearing in reads and writes. | |
| // This should validate that writes are atomic (i.e. that a read interleaved | |
| // between two writes should not read a portion of the first write and a portion | |
| // of the second write). Writer threads should write a uniform string of the | |
| // same character. Reader threads should validate that file content is not | |
| // intermixed (it should check that all characters in the file content are the | |
| // same). | |
| class ReadWrite : public Workload { | |
| public: | |
| ReadWrite(Random& rand) : Workload(rand) {} | |
| void execute() override; | |
| private: | |
| int fd; | |
| // Work describes the list of strings being written to a test file. | |
| std::vector<std::string> work; | |
| std::atomic<bool> go{false}; | |
| std::atomic<bool> stop{false}; | |
| bool isSame(std::vector<char>& target); | |
| void reader(); | |
| void writer(); | |
| }; | |
| } // namespace wasmfs | |
Xet Storage Details
- Size:
- 1.96 kB
- Xet hash:
- b5daf8f795d46d118626d6c085464aa5a3b32bfbd254c4bbba1ae9588bbed593
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.