forked from apache/arrow
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathintegration_skyhook.sh
More file actions
executable file
·141 lines (123 loc) · 3.82 KB
/
Copy pathintegration_skyhook.sh
File metadata and controls
executable file
·141 lines (123 loc) · 3.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#!/usr/bin/env bash
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# This script spawns a single-node Ceph cluster, creates a CephFS mount,
# generates a Parquet dataset, and runs the SkyhookDM integration tests.
# Taken from https://github.com/ceph/go-ceph/blob/master/micro-osd.sh
set -e
set -x
set -u
if [ "${ARROW_SKYHOOK:-OFF}" != "ON" ]; then
exit 0
fi
ARROW_BUILD_DIR=${1}/cpp
DIR=/tmp/integration_skyhook
# set environment variables
pkill ceph || true
rm -rf ${DIR}/*
LOG_DIR=${DIR}/log
MON_DATA=${DIR}/mon
MDS_DATA=${DIR}/mds
MOUNTPT=${MDS_DATA}/mnt
OSD_DATA=${DIR}/osd
mkdir -p ${LOG_DIR} ${MON_DATA} ${OSD_DATA} ${MDS_DATA} ${MOUNTPT}
MDS_NAME="Z"
MON_NAME="a"
MGR_NAME="x"
MIRROR_ID="m"
# cluster wide parameters
cat >> ${DIR}/ceph.conf <<EOF
[global]
fsid = $(uuidgen)
osd crush chooseleaf type = 0
run dir = ${DIR}/run
auth cluster required = none
auth service required = none
auth client required = none
osd pool default size = 1
mon host = ${HOSTNAME}
[mds.${MDS_NAME}]
host = ${HOSTNAME}
[mon.${MON_NAME}]
log file = ${LOG_DIR}/mon.log
chdir = ""
mon cluster log file = ${LOG_DIR}/mon-cluster.log
mon data = ${MON_DATA}
mon data avail crit = 0
mon addr = ${HOSTNAME}
mon allow pool delete = true
[osd.0]
log file = ${LOG_DIR}/osd.log
chdir = ""
osd data = ${OSD_DATA}
osd journal = ${OSD_DATA}.journal
osd journal size = 100
osd objectstore = memstore
osd class load list = *
osd class default list = *
EOF
export CEPH_CONF=${DIR}/ceph.conf
cp $CEPH_CONF /etc/ceph/ceph.conf
# start an osd
ceph-mon --id ${MON_NAME} --mkfs --keyring /dev/null
touch ${MON_DATA}/keyring
ceph-mon --id ${MON_NAME}
# start an osd
OSD_ID=$(ceph osd create)
ceph osd crush add osd.${OSD_ID} 1 root=default
ceph-osd --id ${OSD_ID} --mkjournal --mkfs
ceph-osd --id ${OSD_ID} || ceph-osd --id ${OSD_ID} || ceph-osd --id ${OSD_ID}
# start an mds for cephfs
ceph auth get-or-create mds.${MDS_NAME} mon 'profile mds' mgr 'profile mds' mds 'allow *' osd 'allow *' > ${MDS_DATA}/keyring
ceph osd pool create cephfs_data 8
ceph osd pool create cephfs_metadata 8
ceph fs new cephfs cephfs_metadata cephfs_data
ceph fs ls
ceph-mds -i ${MDS_NAME}
ceph status
while [[ ! $(ceph mds stat | grep "up:active") ]]; do sleep 1; done
# start a manager
ceph-mgr --id ${MGR_NAME}
# test the setup
ceph --version
ceph status
apt update
apt install -y python3-pip
pushd ${ARROW_BUILD_DIR}
# create the rados-classes, if not there already
mkdir -p /usr/lib/x86_64-linux-gnu/rados-classes/
cp debug/libcls_skyhook* /usr/lib/x86_64-linux-gnu/rados-classes/
# mount a ceph filesystem to /mnt/cephfs in the user-space using ceph-fuse
mkdir -p /mnt/cephfs
ceph-fuse /mnt/cephfs
sleep 5
# download an example dataset and copy into the mounted dir
pip3 install pyarrow pandas
python3 /arrow/ci/scripts/generate_dataset.py
cp -r nyc /mnt/cephfs/
sleep 10
# run the tests
SKYHOOK_CLS_TEST=debug/skyhook-cls-test
if [ -f "$SKYHOOK_CLS_TEST" ]; then
debug/skyhook-cls-test
fi
SKYHOOK_PROTOCOL_TEST=debug/skyhook-protocol-test
if [ -f "$SKYHOOK_PROTOCOL_TEST" ]; then
debug/skyhook-protocol-test
fi
popd