Все хранилища данных, которые получают из пользовательских классов datastore, имеют некоторые общие поведения. Эта процедура тестирования предоставляет рекомендации для проверки минимального набора поведения и функциональных возможностей, которые должны иметь все пользовательские хранилища данных. Вам понадобятся дополнительные тесты, чтобы определить любые уникальные функциональности вашего пользовательского datastore.
Если вы разработали свой пользовательский datastore на основе инструкций в Develope Custom Datastore, то выполните эти процедуры тестирования, чтобы проверить свой пользовательский datastore. Сначала выполните модульные тесты, а затем тесты рабочего процесса:
Модульные тесты определяют конструктор и методы datastore.
Тесты рабочего процесса определяют использование datastore.
Для всех этих тестов:
Если не указано в описании теста, примите, что вы тестируете непустой datastore ds.
Проверьте тесты на расширениях файлов, кодировках файлов и местоположениях данных (таких как Hadoop®), что ваш пользовательский datastore предназначен для поддержки.
Инструкции по модульному тесту для конструктора datastore следующие.
| Тест | Ожидаемый выход |
|---|---|
|
Проверьте, работает ли ваш пользовательский конструктор datastore с минимальными необходимыми входами. |
Объект Datastore вашего пользовательского типа datastore с минимальными ожидаемыми свойствами и методами |
|
Проверьте, является ли ваш объект datastore Выполните эту команду: isa(ds,'matlab.io.Datastore') |
|
|
Вызовите пользовательский конструктор datastore с необходимыми входами и любыми поддерживаемыми входными параметрами и аргументами пары "имя-значение". |
Объект Datastore вашего пользовательского типа datastore с минимальными ожидаемыми свойствами и методами |
readМодульный тест руководства по read метод
| Тест | Ожидаемый выход |
|---|---|
|
Вызовите t = read(ds); |
Данные из начала datastore Если вы задаете размер чтения, то размер возвращенных данных эквивалентен размеру чтения. |
|
Вызовите t = read(ds); |
Данные, начиная с конечной точки предыдущей операции чтения Если вы задаете размер чтения, то размер возвращенных данных эквивалентен размеру чтения. |
|
Продолжите вызов while(hasdata(ds)) t = read(ds); end |
Ошибок нет Исправление данных в правильном формате |
|
Когда данные будут доступны для чтения, проверьте Вызовите объект datastore [t,info] = read(ds); |
Нет ошибки
|
|
Когда больше нет доступных для чтения данных, вызывайте |
Ожидаемый выход или сообщение об ошибке на основе пользовательской реализации datastore. |
readallМодульный тест руководства по readall метод
| Тест | Ожидаемый выход |
|---|---|
|
Вызовите |
Все данные |
|
Вызовите Читайте из datastore до while(hasdata(ds)) t = read(ds); end readall(ds) |
Все данные |
hasdataМодульный тест руководства по hasdata метод
| Тест | Ожидаемый выход |
|---|---|
|
Вызовите |
|
|
Вызовите |
|
|
Когда больше данных доступно для чтения, вызовите |
|
|
Когда больше нет доступных для чтения данных, вызовите |
|
resetМодульный тест руководства по reset метод
| Тест | Ожидаемый выход |
|---|---|
|
Вызовите Проверьте, что
reset(ds); t = read(ds); |
Ошибок нет The Если вы задаете размер чтения, то размер возвращенных данных эквивалентен размеру чтения. |
|
Когда больше данных доступно для чтения, вызовите Проверьте, что |
Ошибок нет The Если вы задаете размер чтения, то размер возвращенных данных эквивалентен размеру чтения. |
|
Когда больше данных доступно для чтения, вызовите Проверьте, что |
Ошибок нет The Если вы задаете размер чтения, то размер возвращенных данных эквивалентен размеру чтения. |
|
Когда больше нет доступных для чтения данных, вызовите Проверьте, что |
Ошибок нет The Если вы задаете размер чтения, то размер возвращенных данных эквивалентен размеру чтения. |
progressМодульный тест руководства по progress метод
| Тест | Ожидаемый выход |
|---|---|
|
Вызовите |
|
|
Вызовите
readall(ds); progress(ds) |
|
|
Вызовите |
Часть между |
|
Вызовите |
|
previewМодульный тест руководства по preview метод
| Тест | Ожидаемый выход |
|---|---|
|
Функции |
The |
|
Функции |
The |
|
Функции |
The |
|
Функции |
The |
|
Функции |
The |
|
Функции |
The Если вы задаете размер чтения, то размер возвращенных данных эквивалентен размеру чтения. |
|
Функции |
The |
|
В то время как datastore имеет данные, доступные для чтения, вызывайте |
The |
partitionМодульный тест руководства по partition метод
| Тест | Ожидаемый выход |
|---|---|
|
Функции Функции subds = partition(ds,n,index) read(subds) Проверьте, что раздел действителен. isequal(properties(ds),properties(subds)) isequal(methods(ds),methods(subds)) |
The Возвращенный раздел Секционированный datastore The Вызывающие Если вы задаете размер чтения, то размер возвращенных данных эквивалентен размеру чтения. |
|
Функции Проверьте возвращенные данные по телефону subds = partition(ds,1,1) isequal(properties(ds),properties(subds)) isequal(methods(ds),methods(subds)) isequaln(read(subds),read(ds)) isequaln(preview(subds),preview(ds)) |
Раздел Раздел The |
|
Функции | Перераспределение раздела datastore должно работать без ошибок. |
initializeDatastoreЕсли ваш datastore наследует от matlab.io.datastore.HadoopFileBased, затем проверьте поведение initializeDatastore использование руководящих принципов в этой таблице.
| Тест | Ожидаемый выход |
|---|---|
|
Функции The
Для примера инициализируйте info = struct('FileName','myFileName.ext',... 'Offset',0,'Size',500) initializeDatastore(ds,info) Проверьте инициализацию, исследуя свойства вашего объекта datastore. ds |
The |
getLocationЕсли ваш datastore наследует от matlab.io.datastore.HadoopFileBased, затем проверьте поведение getLocation использование этих руководящих принципов.
| Тест | Ожидаемый выход |
|---|---|
|
Функции location = getLocation(ds) Основываясь на вашей пользовательской реализации datastore,
Если resolve(location) |
The |
isfullfileЕсли ваш datastore наследует от matlab.io.datastore.HadoopFileBased, затем проверьте поведение isfullfile использование этих руководящих принципов.
| Тест | Ожидаемый выход |
|---|---|
|
Функции |
Основываясь на вашей пользовательской реализации datastore, |
Проверьте тесты рабочего процесса в соответствующем окружении.
Если ваш datastore наследует только от matlab.io.Datastore, затем проверьте все тесты рабочих процессов в локальном MATLAB® сеанс.
Если ваш datastore имеет поддержку параллельной обработки (наследует от matlab.io.datastore.Partitionable), затем проверьте тесты рабочего процесса в параллельных окружениях выполнения, таких как Parallel Computing Toolbox™ и MATLAB Parallel Server™.
Если ваш datastore имеет поддержку Hadoop (наследует от matlab.io.datastore.HadoopFileBased), затем проверьте тесты рабочего процесса в кластере Hadoop.
Инструкции по тестированию для tall рабочий процесс
| Тест | Ожидаемый выход |
|---|---|
|
Создайте длинный массив путем вызова t = tall(ds) |
The |
|
Для этого тестового шага создайте объект datastore с данными, которые помещаются в вашей системной памяти. Затем создайте длинный массив, используя этот объект datastore. t = tall(ds) Если ваши данные являются числовыми, примените соответствующую функцию, подобную Если ваши данные имеют тип данных Применить Для примеров смотрите Рабочий процесс Больших данных с использованием высоких массивов и хранилищ данных (Parallel Computing Toolbox). |
Ошибок нет Функция возвращает выход правильного типа данных (не типа Функция возвращает тот же результат, применяется ли она к |
Инструкции по тестированию для рабочего процесса MapReduce
| Тест | Ожидаемый выход |
|---|---|
|
Функции outds = mapreduce(ds,@mapper,@reducer) mapreduce.
Для поддержки использования |
Нет ошибки Операция MapReduce возвращает ожидаемый результат |
Примечание
Эта процедура тестирования предоставляет рекомендации для тестирования минимального набора поведения и функциональных возможностей для пользовательских хранилищ данных. Дополнительные тесты необходимы, чтобы определить любые уникальные функциональности вашего пользовательского datastore.
После завершения реализации и валидации пользовательского datastore, пользовательский datastore готов к использованию.
Для добавления справки по пользовательской реализации datastore см. раздел «Создание справки для классов».
Чтобы поделиться пользовательским datastore с другими пользователями, см. Раздел «Создание и совместное использование тулбоксов».
matlab.io.Datastore | matlab.io.datastore.HadoopLocationBased | matlab.io.datastore.Partitionable