Buckets:
| /* | |
| * Copyright 2015 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. | |
| */ | |
| void test_no_exist() { | |
| struct stat st; | |
| int rtn = stat("/work/notexist.txt", &st); | |
| assert(rtn == -1 && errno == ENOENT); | |
| } | |
| void test_blob_txt() { | |
| // Check that /work/blob.txt contains the expected data. | |
| const char content[] = "hello blob"; | |
| size_t file_len = sizeof(content) - 1; | |
| struct stat st; | |
| char buf[100]; | |
| int rtn = stat("/work/blob.txt", &st); | |
| assert(rtn == 0); | |
| int fd = open("/work/blob.txt", O_RDWR, 0666); | |
| assert(fd >= 0); | |
| ssize_t cnt = read(fd, buf, 1000); | |
| printf("read blob.txt: %ld, expecting: %lu\n", cnt, file_len); | |
| assert(cnt == file_len); | |
| assert(strcmp(buf, content) == 0); | |
| } | |
| void test_file_txt() { | |
| // Seek half way through /work/file.txt then verify the data read from that point on. | |
| const char content[] = "hello file"; | |
| size_t file_len = sizeof(content) - 1; | |
| char buf[100]; | |
| off_t offset = file_len / 2; | |
| int fd = open("/work/file.txt", O_RDONLY, 0666); | |
| assert(fd != -1); | |
| off_t rtn = lseek(fd, offset, SEEK_SET); | |
| assert(rtn == offset); | |
| ssize_t cnt = read(fd, buf, 1000); | |
| printf("read file.txt: %ld, expecting: %llu\n", cnt, file_len - offset); | |
| assert(cnt == file_len - offset); | |
| assert(strncmp(buf, content + offset, file_len - offset) == 0); | |
| } | |
| void test_chmod() { | |
| struct stat st, st2; | |
| stat("/work/file.txt", &st); | |
| chmod("/work/file.txt", 0640); | |
| stat("/work/file.txt", &st2); | |
| assert(st.st_mode == (0777 | S_IFREG) && st2.st_mode == (0640 | S_IFREG)); | |
| } | |
| void test_readdir() { | |
| DIR *pDir = opendir("/work/"); | |
| assert(pDir); | |
| int blobFileExists = 0; | |
| int fileTxtExists = 0; | |
| struct dirent *pDirent; | |
| while ((pDirent = readdir(pDir)) != NULL) { | |
| if (strcmp(pDirent->d_name, "blob.txt") == 0) { | |
| blobFileExists = 1; | |
| } | |
| if (strcmp(pDirent->d_name, "file.txt") == 0) { | |
| fileTxtExists = 1; | |
| } | |
| } | |
| assert(blobFileExists); | |
| assert(fileTxtExists); | |
| } | |
| void test_readlink() { | |
| // attempting to read a worker node as a link should result in EINVAL | |
| char buf[100]; | |
| buf[0] = '\0'; | |
| assert(readlink("/work/blob.txt", buf, sizeof(buf)) == -1); | |
| assert(buf[0] == '\0'); | |
| assert(errno == EINVAL); | |
| } | |
| int main() { | |
| printf("in main\n"); | |
| test_no_exist(); | |
| test_blob_txt(); | |
| test_file_txt(); | |
| test_chmod(); | |
| test_readdir(); | |
| test_readlink(); | |
| printf("done\n"); | |
| return 0; | |
| } | |
Xet Storage Details
- Size:
- 2.74 kB
- Xet hash:
- 9ac32d6473d1bfd46afe6caf2f4c91fa156e6cab486a2c0a8bf4814cba872c47
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.