Skip to content

Commit

Permalink
Test on s390x. (#7038)
Browse files Browse the repository at this point in the history
* Fix && remove unused parameter.
  • Loading branch information
trivialfis committed Jun 18, 2021
1 parent 86715e4 commit 7968c0d
Show file tree
Hide file tree
Showing 7 changed files with 18 additions and 19 deletions.
3 changes: 3 additions & 0 deletions .travis.yml
Expand Up @@ -17,6 +17,9 @@ jobs:
arch: amd64
osx_image: xcode10.2
env: TASK=java_test
- os: linux
arch: s390x
env: TASK=s390x_test

# dependent brew packages
# the dependencies from homebrew is installed manually from setup script due to outdated image from travis.
Expand Down
8 changes: 1 addition & 7 deletions src/data/array_interface.h
Expand Up @@ -29,10 +29,6 @@ struct ArrayInterfaceErrors {
static char const* TypestrFormat() {
return "`typestr' should be of format <endian><type><size of type in bytes>.";
}
// Not supported in Apache Arrow.
static char const* BigEndian() {
return "Big endian is not supported.";
}
static char const* Dimension(int32_t d) {
static std::string str;
str.clear();
Expand Down Expand Up @@ -139,7 +135,6 @@ class ArrayInterfaceHandler {

auto typestr = get<String const>(array.at("typestr"));
CHECK(typestr.size() == 3 || typestr.size() == 4) << ArrayInterfaceErrors::TypestrFormat();
CHECK_NE(typestr.front(), '>') << ArrayInterfaceErrors::BigEndian();

if (array.find("shape") == array.cend()) {
LOG(FATAL) << "Missing `shape' field for array interface";
Expand Down Expand Up @@ -239,7 +234,6 @@ class ArrayInterfaceHandler {
}

static void* ExtractData(std::map<std::string, Json> const &column,
StringView typestr,
std::pair<size_t, size_t> shape) {
Validate(column);
void* p_data = ArrayInterfaceHandler::GetPtrFromArrayData<void*>(column);
Expand Down Expand Up @@ -268,7 +262,7 @@ class ArrayInterface {

std::tie(num_rows, num_cols) = ArrayInterfaceHandler::ExtractShape(array);
data = ArrayInterfaceHandler::ExtractData(
array, StringView{typestr}, std::make_pair(num_rows, num_cols));
array, std::make_pair(num_rows, num_cols));

if (allow_mask) {
common::Span<RBitField8::value_type> s_mask;
Expand Down
1 change: 0 additions & 1 deletion src/data/device_adapter.cuh
Expand Up @@ -124,7 +124,6 @@ class CudfAdapter : public detail::SingleBatchDataIter<CudfAdapterBatch> {

auto const& typestr = get<String const>(json_columns[0]["typestr"]);
CHECK_EQ(typestr.size(), 3) << ArrayInterfaceErrors::TypestrFormat();
CHECK_NE(typestr.front(), '>') << ArrayInterfaceErrors::BigEndian();
std::vector<ArrayInterface> columns;
auto first_column = ArrayInterface(get<Object const>(json_columns[0]));
num_rows_ = first_column.num_rows;
Expand Down
15 changes: 5 additions & 10 deletions tests/cpp/data/test_array_interface.cc
Expand Up @@ -42,23 +42,19 @@ TEST(ArrayInterface, Error) {
std::string typestr{"<f4"};

// missing version
EXPECT_THROW(ArrayInterfaceHandler::ExtractData(column_obj,
StringView{typestr}, shape),
EXPECT_THROW(ArrayInterfaceHandler::ExtractData(column_obj, shape),
dmlc::Error);
column["version"] = Integer(static_cast<Integer::Int>(1));
// missing data
EXPECT_THROW(ArrayInterfaceHandler::ExtractData(column_obj,
StringView{typestr}, shape),
EXPECT_THROW(ArrayInterfaceHandler::ExtractData(column_obj, shape),
dmlc::Error);
column["data"] = j_data;
// missing typestr
EXPECT_THROW(ArrayInterfaceHandler::ExtractData(column_obj,
StringView{typestr}, shape),
EXPECT_THROW(ArrayInterfaceHandler::ExtractData(column_obj, shape),
dmlc::Error);
column["typestr"] = String("<f4");
// nullptr is not valid
EXPECT_THROW(ArrayInterfaceHandler::ExtractData(column_obj,
StringView{typestr}, shape),
EXPECT_THROW(ArrayInterfaceHandler::ExtractData(column_obj, shape),
dmlc::Error);

HostDeviceVector<float> storage;
Expand All @@ -67,8 +63,7 @@ TEST(ArrayInterface, Error) {
Json(Integer(reinterpret_cast<Integer::Int>(storage.ConstHostPointer()))),
Json(Boolean(false))};
column["data"] = j_data;
EXPECT_NO_THROW(ArrayInterfaceHandler::ExtractData(
column_obj, StringView{typestr}, shape));
EXPECT_NO_THROW(ArrayInterfaceHandler::ExtractData(column_obj, shape));
}

TEST(ArrayInterface, GetElement) {
Expand Down
1 change: 1 addition & 0 deletions tests/python/test_basic.py
Expand Up @@ -232,6 +232,7 @@ def test_cv_explicit_fold_indices(self):
assert isinstance(cv, dict)
assert len(cv) == (4)

@pytest.mark.skipif(**tm.skip_s390x())
def test_cv_explicit_fold_indices_labels(self):
params = {'max_depth': 2, 'eta': 1, 'verbosity': 0, 'objective':
'reg:squarederror'}
Expand Down
7 changes: 7 additions & 0 deletions tests/python/testing.py
Expand Up @@ -11,6 +11,7 @@
import tempfile
import xgboost as xgb
import numpy as np
import platform

hypothesis = pytest.importorskip('hypothesis')
sklearn = pytest.importorskip('sklearn')
Expand Down Expand Up @@ -136,6 +137,12 @@ def no_multiple(*args):
return {'condition': condition, 'reason': reason}


def skip_s390x():
condition = platform.machine() == "s390x"
reason = "Known to fail on s390x"
return {"condition": condition, "reason": reason}


# Contains a dataset in numpy format as well as the relevant objective and metric
class TestDataset:
def __init__(self, name, get_dataset, objective, metric
Expand Down
2 changes: 1 addition & 1 deletion tests/travis/run_test.sh
Expand Up @@ -103,5 +103,5 @@ if [ ${TASK} == "s390x_test" ]; then
# Run model compatibility tests
cd ..
python3 -m pip install --user pytest hypothesis
PYTHONPATH=./python-package python3 -m pytest --fulltrace -v -rxXs tests/python/ -k 'test_model'
PYTHONPATH=./python-package python3 -m pytest --fulltrace -v -rxXs tests/python/test_basic.py
fi

0 comments on commit 7968c0d

Please sign in to comment.