summaryrefslogtreecommitdiffstats
path: root/src/vnet/dpo/load_balance_map.h
AgeCommit message (Expand)AuthorFilesLines
2018-05-04Harmonize vec/pool_get_aligned object sizes and alignment requestsDave Barach1-0/+6
2017-10-04[aarch64] Fixes CLI crashes on dpaa2 platform.Christophe Fontaine1-1/+1
2017-04-24Improve Load-Balance MAPsNeale Ranns1-0/+31
2016-12-28Reorganize source tree to use single autotools instanceDamjan Marion1-0/+79
f='#n114'>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 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
#!/bin/sh
set -eux

TMPDIR=$(mktemp -d /tmp/vpp-crccheck-test-XXXXX)

CURR_ROOT=$(git rev-parse --show-toplevel)
CURR_DIR=$(pwd)

verify_check_patchset_fails() {
	if (extras/scripts/crcchecker.py --check-patchset); then
		echo "ERROR - check succeeded, it should have failed!"
		exit 1;
	fi
}

finish() {
	if [ -e "$TMPDIR" ]; then
		echo "Temporary directory is: $TMPDIR"
	fi
}
trap finish EXIT


# make a copy of the current repo that we can play with
cd ${TMPDIR}
mkdir misc-files
git clone ${CURR_ROOT} vpp-uut
cd vpp-uut

# maybe grab the CRC checker
# git fetch "https://gerrit.fd.io/r/vpp" refs/changes/81/26881/14 && git cherry-pick FETCH_HEAD || echo "Already there"


echo "TEST 1: Check the current patchset..."
extras/scripts/crcchecker.py --check-patchset

echo "TEST 2: Dumping the current manifest..."
extras/scripts/crcchecker.py --dump-manifest >${TMPDIR}/misc-files/manifest.txt

echo "TEST 3: Checking the 20.01 version of acl.api...."
extras/scripts/crcchecker.py --git-revision v20.01 src/plugins/acl/acl.api

echo "TEST 4: Add a new field into a message in acl.api, and check patchset - must fail..."
sed -i -e 's#vpe_pid;#vpe_pid; u32 sneaky_new_field;#' src/plugins/acl/acl.api
verify_check_patchset_fails

echo "TEST 5: Rename the changed acl.api file and not add it to git... must fail (due to deletion of the APIs)..."
mv src/plugins/acl/acl.api src/plugins/acl/acl_new.api
verify_check_patchset_fails

echo "TEST 6: Add the renamed file to git commit... must fail (due to addition of the fields)..."
git add src/plugins/acl/acl_new.api
git commit -m "added acl_new.api"
verify_check_patchset_fails

echo "TEST 7: Verify we can delete deprecated message"
git commit -a -m "reset"
cat >src/crccheck.api <<EOL
option version="1.0.0";
autoreply define crccheck
{
  option deprecated;
  bool foo;
};
EOL
git add src/crccheck.api
git commit -m "deprecated api";
# delete API
cat >src/crccheck.api <<EOL
option version="1.0.0";
autoreply define crccheck_2
{
  bool foo;
};
EOL
git add src/crccheck.api
git commit -m "deprecated api";
extras/scripts/crcchecker.py --check-patchset

echo "TEST 7.1: Verify we can delete deprecated message (old/confused style)"
cat >src/crccheck_dep.api <<EOL
option version="1.0.0";
autoreply define crccheck
{
  option status="deprecated";
  bool foo;
};
EOL
git add src/crccheck_dep.api
git commit -m "deprecated api";
# delete API
cat >src/crccheck_dep.api <<EOL
option version="1.0.0";
autoreply define crccheck_2
{
  bool foo;
};
EOL
git add src/crccheck_dep.api
git commit -m "deprecated api";
extras/scripts/crcchecker.py --check-patchset

echo "TEST 8: Verify that we can not rename a non-deprecated message"
sed -i -e 's/crccheck_2/crccheck_3/g' src/crccheck.api
git add src/crccheck.api
git commit -m "renamed api";
verify_check_patchset_fails
# fix it.
sed -i -e 's/crccheck_3/crccheck_2/g' src/crccheck.api
git commit -a --amend -m "empty commit after we renamed api back" --allow-empty

echo "TEST 9: Verify that the check fails if the changes are not committed"
cat >>src/crccheck.api <<EOL
autoreply define crc_new_check_in_progress
{
  option status="in_progress";
  bool foobar;
};
EOL
verify_check_patchset_fails

echo "TEST10: Verify that the in-progress message can be added"
git add src/crccheck.api
git commit -m "added a new in-progress api";
extras/scripts/crcchecker.py --check-patchset

echo "TEST11: Verify we can rename an in-progress API"
sed -i -e 's/crc_new_check_in_progress/crc_new_check_in_progress_2/g' src/crccheck.api
git add src/crccheck.api
git commit -m "renamed in-progress api";
extras/scripts/crcchecker.py --check-patchset

echo "TEST11.1: Switch to new designation of in-progress API"
sed -i -e 's/status="in_progress"/in_progress/g' src/crccheck.api
git add src/crccheck.api
git commit -m "new designation of in-progress api";
extras/scripts/crcchecker.py --check-patchset


echo "TEST12: Verify we can add a field to an in-progress API"
sed -i -e 's/foobar;/foobar; bool new_baz;/g' src/crccheck.api
git add src/crccheck.api
git commit -m "new field added in in-progress api";
extras/scripts/crcchecker.py --check-patchset

echo "TEST13: Verify we fail the check if the file can not be compiled"
cat >src/crccheck2.api <<EOL
option version="0.0.1";
autoreply define spot_the_error
{
  option status="in_progress"
  bool something_important;
};
EOL
git add src/crccheck2.api
git commit -m "a new message with a syntax error";
verify_check_patchset_fails

# get rid of the "erroneous" commit in the previous test
git reset --hard HEAD~1

echo "TEST14: Verify we handle new .api file"
cat >src/crccheck3.api <<EOL
autoreply define foo
{
  bool bar;
};
EOL
git add src/crccheck3.api
git commit -m "a new message in new file";
extras/scripts/crcchecker.py --check-patchset

echo "TEST: All tests got the expected result, cleaning up."

# done with all the tests - clean up
cd ${CURR_DIR}

# beware of empty variables, careful with deletion
rm -rf ${TMPDIR}/vpp-uut
rm -rf ${TMPDIR}/misc-files
rmdir ${TMPDIR}