Skip to content

Commit 3790cc1

Browse files
author
Abhishek Kumar
committed
Ranger REST API SmokeTests with ROBOT Framework
1 parent f06d0e7 commit 3790cc1

File tree

5 files changed

+120
-8
lines changed

5 files changed

+120
-8
lines changed

.github/workflows/maven.yml

+34-8
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242
distribution: 'temurin'
4343
cache: maven
4444
- name: build (8)
45-
run: mvn -T 8 clean install --no-transfer-progress -B -V
45+
run: mvn -T 8 clean install -DskipTests --no-transfer-progress -B -V
4646
- name: Upload artifacts
4747
uses: actions/upload-artifact@v4
4848
with:
@@ -66,11 +66,10 @@ jobs:
6666
with:
6767
name: target-11
6868
path: target/*
69-
69+
7070
docker-build:
7171
needs:
7272
- build-8
73-
- build-11
7473
runs-on: ubuntu-latest
7574
steps:
7675
- uses: actions/checkout@v4
@@ -134,7 +133,8 @@ jobs:
134133
-f docker-compose.ranger-hive.yml \
135134
-f docker-compose.ranger-knox.yml \
136135
-f docker-compose.ranger-ozone.yml up -d
137-
- name: Check status of containers and remove them
136+
137+
- name: Check status of containers
138138
run: |
139139
sleep 60
140140
containers=(ranger ranger-zk ranger-solr ranger-postgres ranger-usersync ranger-tagsync ranger-kms ranger-hadoop ranger-hbase ranger-kafka ranger-hive ranger-knox ozone-om ozone-scm ozone-datanode);
@@ -150,8 +150,34 @@ jobs:
150150
151151
if [[ $flag == true ]]; then
152152
echo "All required containers are up and running";
153-
docker stop $(docker ps -q) && docker rm $(docker ps -aq);
154-
else
155-
docker stop $(docker ps -q) && docker rm $(docker ps -aq);
156-
exit 1;
157153
fi
154+
155+
- name: Set up Python
156+
uses: actions/setup-python@v4
157+
with:
158+
python-version: '3.9'
159+
160+
# Install Robot Framework and dependencies
161+
- name: Install Robot Framework
162+
run: |
163+
python -m pip install --upgrade pip
164+
python --version
165+
pip install robotframework
166+
pip install robotframework-requests
167+
robot --version || true
168+
169+
- name: Run Ranger REST API SmokeTests
170+
run: |
171+
cd dev-support/smoketests/ranger/apis
172+
mkdir -p output
173+
robot --outputdir output --loglevel DEBUG session_management.robot policy_management.robot user_management.robot
174+
175+
- name: Upload Robot Framework Artifacts
176+
uses: actions/upload-artifact@v4
177+
with:
178+
name: Robot-Framework-Artifacts
179+
path: output/
180+
181+
- name: Remove Containers
182+
run: |
183+
docker stop $(docker ps -q) && docker rm $(docker ps -aq);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
*** Settings ***
2+
Library Collections
3+
Resource resources.robot
4+
Suite Setup Initialize Ranger Session (HTTP)
5+
6+
*** Variables ***
7+
${POLICY_NAME} hbase-archive
8+
${HDFS_SVC_NAME} dev_hdfs
9+
${HIVE_SVC_NAME} dev_hive
10+
${HIVE_POLICY} test policy
11+
${QPARAMS} servicename=dev_hive&policyname=test policy
12+
@{TEST_DB} test_db
13+
@{TEST_TABLE} test_tbl
14+
@{TEST_COL} *
15+
&{ACCESS_CR} type=create isAllowed=${true}
16+
&{ACCESS_AL} type=alter isAllowed=${true}
17+
&{ACCESS_DR} type=drop isAllowed=${true}
18+
@{ACCESSES} ${ACCESS_CR} ${ACCESS_AL}
19+
@{D_ACCESSES} ${ACCESS_DR}
20+
@{USERS} admin
21+
22+
*** Test Cases ***
23+
Get All Policies
24+
${response}= GET On Session ranger /service/public/v2/api/policy
25+
Should Be Equal As Numbers ${response.status_code} 200
26+
Log ${response.json()}
27+
28+
29+
Create New Hive Policy
30+
${database} Create Dictionary values=${TEST_DB} isExcludes=${false} isRecursive=${false}
31+
${table} Create Dictionary values=${TEST_TABLE} isExcludes=${false} isRecursive=${false}
32+
${column} Create Dictionary values=${TEST_COL} isExcludes=${false} isRecursive=${false}
33+
34+
${resources} Create Dictionary database=${database} table=${table} column=${column}
35+
36+
${policy_item} Create Dictionary delegateAdmin=${false} users=${USERS} accesses=${ACCESSES}
37+
${deny_policy_item} Create Dictionary delegateAdmin=${false} users=${USERS} accesses=${D_ACCESSES}
38+
39+
${policy_items} Create List ${policy_item}
40+
${deny_policy_items} Create List ${deny_policy_item}
41+
${payload} Create Dictionary service=${HIVE_SVC_NAME} isEnabled=${true} isDenyAllElse=${false} name=test policy resources=${resources} policyItems=${policy_items} denyPolicyItems=${deny_policy_items}
42+
43+
# Log and Verify Payload
44+
Log ${payload}
45+
46+
${response}= POST On Session ranger /service/public/v2/api/policy json=${payload}
47+
Should Be Equal As Numbers ${response.status_code} 200
48+
Log ${response.json()}
49+
50+
51+
Delete Hive Policy
52+
${response}= DELETE On Session ranger /service/public/v2/api/policy params=${QPARAMS}
53+
Should Be Equal As Numbers ${response.status_code} 204
54+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
*** Settings ***
2+
Library RequestsLibrary
3+
4+
*** Variables ***
5+
${RANGER_HOST} localhost
6+
${PORT} 6080
7+
@{CREDS} admin rangerR0cks!
8+
9+
*** Keywords ***
10+
Initialize Ranger Session (HTTP)
11+
Create Session ranger http://${RANGER_HOST}:${PORT} auth=${CREDS}
12+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
*** Settings ***
2+
Resource resources.robot
3+
4+
*** Test Cases ***
5+
Create Ranger Session
6+
[Documentation] Establish a session with Ranger Admin
7+
Initialize Ranger Session (HTTP)
8+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
*** Settings ***
2+
Resource resources.robot
3+
Suite Setup Initialize Ranger Session (HTTP)
4+
5+
*** Variables ***
6+
7+
*** Test Cases ***
8+
Get All Users
9+
${response}= GET On Session ranger /service/xusers/users
10+
Should Be Equal As Numbers ${response.status_code} 200
11+
Log ${response.json()}
12+

0 commit comments

Comments
 (0)