| 104 | |
| 105 | |
| 106 | void TestSampleDataset(const TSampleDatasetTestCase& testCase) { |
| 107 | TReadDatasetMainParams readDatasetMainParams; |
| 108 | |
| 109 | // TODO(akhropov): temporarily use THolder until TTempFile move semantic are fixed |
| 110 | TVector<THolder<TTempFile>> srcDataFiles; |
| 111 | |
| 112 | SaveSrcData(testCase.SrcData, &readDatasetMainParams, &srcDataFiles); |
| 113 | |
| 114 | NCatboostOptions::TDatasetReadingParams datasetReadingParams; |
| 115 | datasetReadingParams.ColumnarPoolFormatParams = readDatasetMainParams.ColumnarPoolFormatParams; |
| 116 | datasetReadingParams.PoolPath = readDatasetMainParams.PoolPath; |
| 117 | datasetReadingParams.PairsFilePath = readDatasetMainParams.PairsFilePath; |
| 118 | datasetReadingParams.GraphFilePath = readDatasetMainParams.GraphFilePath; |
| 119 | datasetReadingParams.FeatureNamesPath = readDatasetMainParams.FeatureNamesFilePath; |
| 120 | |
| 121 | NPar::TLocalExecutor localExecutor; |
| 122 | localExecutor.RunAdditionalThreads(3); |
| 123 | |
| 124 | auto sampleDataset = [&] () { |
| 125 | auto sampler = GetProcessor<IDataProviderSampler, TDataProviderSampleParams>( |
| 126 | readDatasetMainParams.PoolPath, |
| 127 | TDataProviderSampleParams { |
| 128 | datasetReadingParams, |
| 129 | testCase.OnlyFeaturesData, |
| 130 | /*CpuUsedRamLimit*/ Max<ui64>(), |
| 131 | &localExecutor |
| 132 | } |
| 133 | ); |
| 134 | |
| 135 | TDataProviderPtr dataProvider; |
| 136 | if (testCase.SubsetIndices) { |
| 137 | dataProvider = sampler->SampleByIndices(*(testCase.SubsetIndices)); |
| 138 | } else if (testCase.SubsetSampleIds) { |
| 139 | dataProvider = sampler->SampleBySampleIds(*(testCase.SubsetSampleIds)); |
| 140 | } else { |
| 141 | CB_ENSURE(false, "Neither indices nor sampleIds are provided"); |
| 142 | } |
| 143 | |
| 144 | return dataProvider; |
| 145 | }; |
| 146 | |
| 147 | if (testCase.ExpectedReadError) { |
| 148 | UNIT_ASSERT_EXCEPTION(sampleDataset(), TCatBoostException); |
| 149 | } else { |
| 150 | TDataProviderPtr dataProvider = sampleDataset(); |
| 151 | Compare<TRawObjectsDataProvider>(std::move(dataProvider), testCase.ExpectedData); |
| 152 | } |
| 153 | } |
| 154 | |
| 155 | } |
| 156 | } |
no test coverage detected