mirror of
https://github.com/systemd/systemd
synced 2026-03-19 03:24:45 +01:00
Compare commits
13 Commits
b5ce2feebc
...
abfbfee36c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
abfbfee36c | ||
|
|
2e8a32afbc | ||
|
|
ffd0815171 | ||
|
|
d8301aef51 | ||
|
|
51bb6a103e | ||
|
|
917578880f | ||
|
|
4bee2333cf | ||
|
|
b152adbfa9 | ||
|
|
fa1fdd3099 | ||
|
|
85d3f13254 | ||
|
|
1d5574516f | ||
|
|
7d3f9bf493 | ||
|
|
35cde9e935 |
6
po/ko.po
6
po/ko.po
@ -9,7 +9,7 @@ msgstr ""
|
||||
"Project-Id-Version: systemd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-01-08 17:48+0100\n"
|
||||
"PO-Revision-Date: 2021-04-15 10:01+0000\n"
|
||||
"PO-Revision-Date: 2021-06-22 10:04+0000\n"
|
||||
"Last-Translator: simmon <simmon@nplob.com>\n"
|
||||
"Language-Team: Korean <https://translate.fedoraproject.org/projects/systemd/"
|
||||
"master/ko/>\n"
|
||||
@ -18,7 +18,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 4.5.3\n"
|
||||
"X-Generator: Weblate 4.7\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
|
||||
#: src/core/org.freedesktop.systemd1.policy.in:22
|
||||
@ -112,7 +112,7 @@ msgstr "홈 영역 암호 변경"
|
||||
#: src/home/org.freedesktop.home1.policy:64
|
||||
msgid ""
|
||||
"Authentication is required to change the password of a user's home area."
|
||||
msgstr "사용자 홈 영역의 암호를 바꾸려면 인증이 필요합니다."
|
||||
msgstr "사용자 홈 영역의 비밀번호를 변경하려면 인증이 필요합니다."
|
||||
|
||||
#: src/hostname/org.freedesktop.hostname1.policy:20
|
||||
msgid "Set hostname"
|
||||
|
||||
@ -402,7 +402,7 @@ static int routing_policy_rule_set_netlink_message(const RoutingPolicyRule *rule
|
||||
|
||||
/* link may be NULL. */
|
||||
|
||||
if (in_addr_is_set(rule->family, &rule->from)) {
|
||||
if (rule->from_prefixlen > 0) {
|
||||
r = netlink_message_append_in_addr_union(m, FRA_SRC, rule->family, &rule->from);
|
||||
if (r < 0)
|
||||
return log_link_error_errno(link, r, "Could not append FRA_SRC attribute: %m");
|
||||
@ -412,7 +412,7 @@ static int routing_policy_rule_set_netlink_message(const RoutingPolicyRule *rule
|
||||
return log_link_error_errno(link, r, "Could not set source prefix length: %m");
|
||||
}
|
||||
|
||||
if (in_addr_is_set(rule->family, &rule->to)) {
|
||||
if (rule->to_prefixlen > 0) {
|
||||
r = netlink_message_append_in_addr_union(m, FRA_DST, rule->family, &rule->to);
|
||||
if (r < 0)
|
||||
return log_link_error_errno(link, r, "Could not append FRA_DST attribute: %m");
|
||||
|
||||
@ -531,7 +531,7 @@ int mode_to_inaccessible_node(
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mount_flags_to_string(long unsigned flags, char **ret) {
|
||||
int mount_flags_to_string(long unsigned flags, char **ret) {
|
||||
static const struct {
|
||||
long unsigned flag;
|
||||
const char *name;
|
||||
@ -564,6 +564,8 @@ static int mount_flags_to_string(long unsigned flags, char **ret) {
|
||||
};
|
||||
_cleanup_free_ char *str = NULL;
|
||||
|
||||
assert(ret);
|
||||
|
||||
for (size_t i = 0; i < ELEMENTSOF(map); i++)
|
||||
if (flags & map[i].flag) {
|
||||
if (!strextend_with_separator(&str, "|", map[i].name))
|
||||
|
||||
@ -89,6 +89,7 @@ int mount_option_mangle(
|
||||
char **ret_remaining_options);
|
||||
|
||||
int mode_to_inaccessible_node(const char *runtime_dir, mode_t mode, char **dest);
|
||||
int mount_flags_to_string(long unsigned flags, char **ret);
|
||||
|
||||
/* Useful for usage with _cleanup_(), unmounts, removes a directory and frees the pointer */
|
||||
static inline char* umount_and_rmdir_and_free(char *p) {
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
#include "capability-util.h"
|
||||
#include "fd-util.h"
|
||||
#include "fileio.h"
|
||||
#include "missing_mount.h"
|
||||
#include "mount-util.h"
|
||||
#include "namespace-util.h"
|
||||
#include "path-util.h"
|
||||
@ -21,6 +22,8 @@ static void test_mount_option_mangle(void) {
|
||||
char *opts = NULL;
|
||||
unsigned long f;
|
||||
|
||||
log_info("/* %s */", __func__);
|
||||
|
||||
assert_se(mount_option_mangle(NULL, MS_RDONLY|MS_NOSUID, &f, &opts) == 0);
|
||||
assert_se(f == (MS_RDONLY|MS_NOSUID));
|
||||
assert_se(opts == NULL);
|
||||
@ -76,11 +79,61 @@ static void test_mount_option_mangle(void) {
|
||||
opts = mfree(opts);
|
||||
}
|
||||
|
||||
static void test_mount_flags_to_string_one(unsigned long flags, const char *expected) {
|
||||
_cleanup_free_ char *x = NULL;
|
||||
int r;
|
||||
|
||||
r = mount_flags_to_string(flags, &x);
|
||||
log_info("flags: %#lX → %d/\"%s\"", flags, r, strnull(x));
|
||||
assert_se(r >= 0);
|
||||
assert_se(streq(x, expected));
|
||||
}
|
||||
|
||||
static void test_mount_flags_to_string(void) {
|
||||
log_info("/* %s */", __func__);
|
||||
|
||||
test_mount_flags_to_string_one(0, "0");
|
||||
test_mount_flags_to_string_one(MS_RDONLY, "MS_RDONLY");
|
||||
test_mount_flags_to_string_one(MS_NOSUID, "MS_NOSUID");
|
||||
test_mount_flags_to_string_one(MS_NODEV, "MS_NODEV");
|
||||
test_mount_flags_to_string_one(MS_NOEXEC, "MS_NOEXEC");
|
||||
test_mount_flags_to_string_one(MS_SYNCHRONOUS, "MS_SYNCHRONOUS");
|
||||
test_mount_flags_to_string_one(MS_REMOUNT, "MS_REMOUNT");
|
||||
test_mount_flags_to_string_one(MS_MANDLOCK, "MS_MANDLOCK");
|
||||
test_mount_flags_to_string_one(MS_DIRSYNC, "MS_DIRSYNC");
|
||||
test_mount_flags_to_string_one(MS_NOSYMFOLLOW, "MS_NOSYMFOLLOW");
|
||||
test_mount_flags_to_string_one(MS_NOATIME, "MS_NOATIME");
|
||||
test_mount_flags_to_string_one(MS_NODIRATIME, "MS_NODIRATIME");
|
||||
test_mount_flags_to_string_one(MS_BIND, "MS_BIND");
|
||||
test_mount_flags_to_string_one(MS_MOVE, "MS_MOVE");
|
||||
test_mount_flags_to_string_one(MS_REC, "MS_REC");
|
||||
test_mount_flags_to_string_one(MS_SILENT, "MS_SILENT");
|
||||
test_mount_flags_to_string_one(MS_POSIXACL, "MS_POSIXACL");
|
||||
test_mount_flags_to_string_one(MS_UNBINDABLE, "MS_UNBINDABLE");
|
||||
test_mount_flags_to_string_one(MS_PRIVATE, "MS_PRIVATE");
|
||||
test_mount_flags_to_string_one(MS_SLAVE, "MS_SLAVE");
|
||||
test_mount_flags_to_string_one(MS_SHARED, "MS_SHARED");
|
||||
test_mount_flags_to_string_one(MS_RELATIME, "MS_RELATIME");
|
||||
test_mount_flags_to_string_one(MS_KERNMOUNT, "MS_KERNMOUNT");
|
||||
test_mount_flags_to_string_one(MS_I_VERSION, "MS_I_VERSION");
|
||||
test_mount_flags_to_string_one(MS_STRICTATIME, "MS_STRICTATIME");
|
||||
test_mount_flags_to_string_one(MS_LAZYTIME, "MS_LAZYTIME");
|
||||
test_mount_flags_to_string_one(MS_LAZYTIME|MS_STRICTATIME, "MS_STRICTATIME|MS_LAZYTIME");
|
||||
test_mount_flags_to_string_one(UINT_MAX,
|
||||
"MS_RDONLY|MS_NOSUID|MS_NODEV|MS_NOEXEC|MS_SYNCHRONOUS|MS_REMOUNT|"
|
||||
"MS_MANDLOCK|MS_DIRSYNC|MS_NOSYMFOLLOW|MS_NOATIME|MS_NODIRATIME|"
|
||||
"MS_BIND|MS_MOVE|MS_REC|MS_SILENT|MS_POSIXACL|MS_UNBINDABLE|"
|
||||
"MS_PRIVATE|MS_SLAVE|MS_SHARED|MS_RELATIME|MS_KERNMOUNT|"
|
||||
"MS_I_VERSION|MS_STRICTATIME|MS_LAZYTIME|fc000200");
|
||||
}
|
||||
|
||||
static void test_bind_remount_recursive(void) {
|
||||
_cleanup_(rm_rf_physical_and_freep) char *tmp = NULL;
|
||||
_cleanup_free_ char *subdir = NULL;
|
||||
const char *p;
|
||||
|
||||
log_info("/* %s */", __func__);
|
||||
|
||||
if (geteuid() != 0 || have_effective_cap(CAP_SYS_ADMIN) <= 0) {
|
||||
(void) log_tests_skipped("not running privileged");
|
||||
return;
|
||||
@ -134,6 +187,8 @@ static void test_bind_remount_recursive(void) {
|
||||
static void test_bind_remount_one(void) {
|
||||
pid_t pid;
|
||||
|
||||
log_info("/* %s */", __func__);
|
||||
|
||||
if (geteuid() != 0 || have_effective_cap(CAP_SYS_ADMIN) <= 0) {
|
||||
(void) log_tests_skipped("not running privileged");
|
||||
return;
|
||||
@ -166,6 +221,7 @@ int main(int argc, char *argv[]) {
|
||||
test_setup_logging(LOG_DEBUG);
|
||||
|
||||
test_mount_option_mangle();
|
||||
test_mount_flags_to_string();
|
||||
test_bind_remount_recursive();
|
||||
test_bind_remount_one();
|
||||
|
||||
|
||||
@ -16,59 +16,11 @@ $KERNEL_APPEND
|
||||
. "${TEST_BASE_DIR:?}/test-functions"
|
||||
|
||||
check_result_nspawn() {
|
||||
local workspace="${1:?}"
|
||||
local ret=1
|
||||
|
||||
[[ -e "$workspace/testok" ]] && ret=0
|
||||
|
||||
if [[ -s "$workspace/failed" ]]; then
|
||||
ret=$((ret + 1))
|
||||
echo "=== Failed test log ==="
|
||||
cat "$workspace/failed"
|
||||
else
|
||||
if [[ -s "$workspace/skipped" ]]; then
|
||||
echo "=== Skipped test log =="
|
||||
cat "$workspace/skipped"
|
||||
fi
|
||||
if [[ -s "$workspace/testok" ]]; then
|
||||
echo "=== Passed tests ==="
|
||||
cat "$workspace/testok"
|
||||
fi
|
||||
fi
|
||||
|
||||
save_journal "$workspace/var/log/journal"
|
||||
_umount_dir "${initdir:?}"
|
||||
|
||||
[[ -n "${TIMED_OUT:=}" ]] && ret=1
|
||||
return $ret
|
||||
check_result_nspawn_unittests "${1}"
|
||||
}
|
||||
|
||||
check_result_qemu() {
|
||||
local ret=1
|
||||
|
||||
mount_initdir
|
||||
[[ -e "${initdir:?}/testok" ]] && ret=0
|
||||
|
||||
if [[ -s "$initdir/failed" ]]; then
|
||||
ret=$((ret + 1))
|
||||
echo "=== Failed test log ==="
|
||||
cat "$initdir/failed"
|
||||
else
|
||||
if [[ -s "$initdir/skipped" ]]; then
|
||||
echo "=== Skipped test log =="
|
||||
cat "$initdir/skipped"
|
||||
fi
|
||||
if [[ -s "$initdir/testok" ]]; then
|
||||
echo "=== Passed tests ==="
|
||||
cat "$initdir/testok"
|
||||
fi
|
||||
fi
|
||||
|
||||
save_journal "$initdir/var/log/journal"
|
||||
_umount_dir "$initdir"
|
||||
|
||||
[[ -n "${TIMED_OUT:=}" ]] && ret=1
|
||||
return $ret
|
||||
check_result_qemu_unittests
|
||||
}
|
||||
|
||||
do_test "$@"
|
||||
|
||||
1
test/TEST-61-UNITTESTS-QEMU/Makefile
Symbolic link
1
test/TEST-61-UNITTESTS-QEMU/Makefile
Symbolic link
@ -0,0 +1 @@
|
||||
../TEST-01-BASIC/Makefile
|
||||
0
test/TEST-61-UNITTESTS-QEMU/deny-list-ubuntu-ci
Normal file
0
test/TEST-61-UNITTESTS-QEMU/deny-list-ubuntu-ci
Normal file
27
test/TEST-61-UNITTESTS-QEMU/test.sh
Executable file
27
test/TEST-61-UNITTESTS-QEMU/test.sh
Executable file
@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
TEST_DESCRIPTION="Run unit tests under qemu"
|
||||
# this subset of unit tests requires qemu, so they are ran here to avoid slowing down TEST-02
|
||||
TEST_NO_NSPAWN=1
|
||||
|
||||
# embed some newlines in the kernel command line to stress our test suite
|
||||
KERNEL_APPEND="
|
||||
|
||||
frobnicate!
|
||||
|
||||
$KERNEL_APPEND
|
||||
"
|
||||
|
||||
# shellcheck source=test/test-functions
|
||||
. "${TEST_BASE_DIR:?}/test-functions"
|
||||
|
||||
check_result_nspawn() {
|
||||
check_result_nspawn_unittests "${1}"
|
||||
}
|
||||
|
||||
check_result_qemu() {
|
||||
check_result_qemu_unittests
|
||||
}
|
||||
|
||||
do_test "$@"
|
||||
@ -864,6 +864,7 @@ install_modules() {
|
||||
|
||||
instmods loop
|
||||
instmods vfat
|
||||
instmods nls_ascii =nls
|
||||
instmods dummy
|
||||
|
||||
if [[ "$LOOKS_LIKE_SUSE" ]]; then
|
||||
@ -1228,6 +1229,66 @@ check_result_qemu() {
|
||||
return $ret
|
||||
}
|
||||
|
||||
check_result_nspawn_unittests() {
|
||||
local workspace="${1:?}"
|
||||
local ret=1
|
||||
|
||||
[[ -e "$workspace/testok" ]] && ret=0
|
||||
|
||||
if [[ -s "$workspace/failed" ]]; then
|
||||
ret=$((ret + 1))
|
||||
echo "=== Failed test log ==="
|
||||
cat "$workspace/failed"
|
||||
else
|
||||
if [[ -s "$workspace/skipped" ]]; then
|
||||
echo "=== Skipped test log =="
|
||||
cat "$workspace/skipped"
|
||||
# We might have only skipped tests - that should not fail the job
|
||||
ret=0
|
||||
fi
|
||||
if [[ -s "$workspace/testok" ]]; then
|
||||
echo "=== Passed tests ==="
|
||||
cat "$workspace/testok"
|
||||
fi
|
||||
fi
|
||||
|
||||
save_journal "$workspace/var/log/journal"
|
||||
_umount_dir "${initdir:?}"
|
||||
|
||||
[[ -n "${TIMED_OUT:=}" ]] && ret=1
|
||||
return $ret
|
||||
}
|
||||
|
||||
check_result_qemu_unittests() {
|
||||
local ret=1
|
||||
|
||||
mount_initdir
|
||||
[[ -e "${initdir:?}/testok" ]] && ret=0
|
||||
|
||||
if [[ -s "$initdir/failed" ]]; then
|
||||
ret=$((ret + 1))
|
||||
echo "=== Failed test log ==="
|
||||
cat "$initdir/failed"
|
||||
else
|
||||
if [[ -s "$initdir/skipped" ]]; then
|
||||
echo "=== Skipped test log =="
|
||||
cat "$initdir/skipped"
|
||||
# We might have only skipped tests - that should not fail the job
|
||||
ret=0
|
||||
fi
|
||||
if [[ -s "$initdir/testok" ]]; then
|
||||
echo "=== Passed tests ==="
|
||||
cat "$initdir/testok"
|
||||
fi
|
||||
fi
|
||||
|
||||
save_journal "$initdir/var/log/journal"
|
||||
_umount_dir "$initdir"
|
||||
|
||||
[[ -n "${TIMED_OUT:=}" ]] && ret=1
|
||||
return $ret
|
||||
}
|
||||
|
||||
strip_binaries() {
|
||||
dinfo "Strip binaries"
|
||||
if [[ "$STRIP_BINARIES" = "no" ]]; then
|
||||
|
||||
@ -14,6 +14,7 @@ OutgoingInterface=test1
|
||||
|
||||
[RoutingPolicyRule]
|
||||
IncomingInterface=test1
|
||||
From=::/0
|
||||
Table=8
|
||||
Priority=100
|
||||
Family=ipv6
|
||||
@ -23,3 +24,9 @@ IncomingInterface=test1
|
||||
Table=9
|
||||
Priority=101
|
||||
Family=both
|
||||
|
||||
[RoutingPolicyRule]
|
||||
IncomingInterface=test1
|
||||
From=0.0.0.0/8
|
||||
Table=10
|
||||
Priority=102
|
||||
|
||||
@ -1858,7 +1858,7 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities):
|
||||
'routing-policy-rule-reconfigure2.network',
|
||||
]
|
||||
|
||||
routing_policy_rule_tables = ['7', '8', '9', '1011']
|
||||
routing_policy_rule_tables = ['7', '8', '9', '10', '1011']
|
||||
routes = [['blackhole', '202.54.1.2'], ['unreachable', '202.54.1.3'], ['prohibit', '202.54.1.4']]
|
||||
|
||||
def setUp(self):
|
||||
@ -2108,6 +2108,13 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities):
|
||||
self.assertRegex(output, 'iif test1')
|
||||
self.assertRegex(output, 'lookup 8')
|
||||
|
||||
output = check_output('ip rule list iif test1 priority 102')
|
||||
print(output)
|
||||
self.assertRegex(output, '102:')
|
||||
self.assertRegex(output, 'from 0.0.0.0/8')
|
||||
self.assertRegex(output, 'iif test1')
|
||||
self.assertRegex(output, 'lookup 10')
|
||||
|
||||
def test_routing_policy_rule_issue_11280(self):
|
||||
copy_unit_to_networkd_unit_path('routing-policy-rule-test1.network', '11-dummy.netdev',
|
||||
'routing-policy-rule-dummy98.network', '12-dummy.netdev')
|
||||
|
||||
@ -4,7 +4,8 @@ set -o pipefail
|
||||
|
||||
NPROC=$(nproc)
|
||||
MAX_QUEUE_SIZE=${NPROC:-2}
|
||||
mapfile -t TEST_LIST < <(find /usr/lib/systemd/tests/ -maxdepth 1 -type f -name "test-*")
|
||||
TESTS_GLOB=${TESTS_GLOB:-test-*}
|
||||
mapfile -t TEST_LIST < <(find /usr/lib/systemd/tests/ -maxdepth 1 -type f -name "${TESTS_GLOB}")
|
||||
|
||||
# reset state
|
||||
rm -fv /failed-tests /skipped-tests /skipped
|
||||
@ -78,10 +79,12 @@ done
|
||||
|
||||
# Wait for remaining running tasks
|
||||
for key in "${!running[@]}"; do
|
||||
wait ${running[$key]}
|
||||
ec=$?
|
||||
wait ${running[$key]} && ec=0 || ec=$?
|
||||
report_result "$key" $ec
|
||||
unset running["$key"]
|
||||
done
|
||||
|
||||
# Test logs are sometimes lost, as the system shuts down immediately after
|
||||
journalctl --sync
|
||||
|
||||
exit 0
|
||||
|
||||
7
test/units/testsuite-61.service
Normal file
7
test/units/testsuite-61.service
Normal file
@ -0,0 +1,7 @@
|
||||
[Unit]
|
||||
Description=TEST-61-UNITTESTS-QEMU
|
||||
|
||||
[Service]
|
||||
ExecStartPre=rm -f /failed /testok
|
||||
ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh
|
||||
Type=oneshot
|
||||
8
test/units/testsuite-61.sh
Executable file
8
test/units/testsuite-61.sh
Executable file
@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eux
|
||||
set -o pipefail
|
||||
|
||||
TESTS_GLOB="test-loop-block"
|
||||
. $(dirname $0)/testsuite-02.sh
|
||||
|
||||
exit 0
|
||||
Loading…
x
Reference in New Issue
Block a user