Compare commits
No commits in common. "02baf239d87295362740d961765091b778795573" and "c4742de6d801b125abf3c4d1c710280f51d7c701" have entirely different histories.
02baf239d8
...
c4742de6d8
|
@ -32,7 +32,6 @@ static int frame_callback(Dwfl_Frame *frame, void *userdata) {
|
||||||
const char *fname = NULL, *symbol = NULL;
|
const char *fname = NULL, *symbol = NULL;
|
||||||
Dwfl_Module *module;
|
Dwfl_Module *module;
|
||||||
bool is_activation;
|
bool is_activation;
|
||||||
uint64_t module_offset = 0;
|
|
||||||
|
|
||||||
assert(frame);
|
assert(frame);
|
||||||
assert(c);
|
assert(c);
|
||||||
|
@ -49,7 +48,6 @@ static int frame_callback(Dwfl_Frame *frame, void *userdata) {
|
||||||
if (module) {
|
if (module) {
|
||||||
Dwarf_Die *s, *cudie;
|
Dwarf_Die *s, *cudie;
|
||||||
int n;
|
int n;
|
||||||
Dwarf_Addr start;
|
|
||||||
|
|
||||||
cudie = dwfl_module_addrdie(module, pc_adjusted, &bias);
|
cudie = dwfl_module_addrdie(module, pc_adjusted, &bias);
|
||||||
if (cudie) {
|
if (cudie) {
|
||||||
|
@ -75,11 +73,10 @@ static int frame_callback(Dwfl_Frame *frame, void *userdata) {
|
||||||
if (!symbol)
|
if (!symbol)
|
||||||
symbol = dwfl_module_addrname(module, pc_adjusted);
|
symbol = dwfl_module_addrname(module, pc_adjusted);
|
||||||
|
|
||||||
fname = dwfl_module_info(module, NULL, &start, NULL, NULL, NULL, NULL, NULL);
|
fname = dwfl_module_info(module, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||||
module_offset = pc - start;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(c->f, "#%-2u 0x%016" PRIx64 " %s (%s + 0x%" PRIx64 ")\n", c->n_frame, (uint64_t) pc, strna(symbol), strna(fname), module_offset);
|
fprintf(c->f, "#%-2u 0x%016" PRIx64 " %s (%s)\n", c->n_frame, (uint64_t) pc, strna(symbol), strna(fname));
|
||||||
c->n_frame++;
|
c->n_frame++;
|
||||||
|
|
||||||
return DWARF_CB_OK;
|
return DWARF_CB_OK;
|
||||||
|
|
|
@ -156,8 +156,8 @@ static double percent(int pass, unsigned long cur, unsigned long max) {
|
||||||
(double) cur / (double) max;
|
(double) cur / (double) max;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int process_progress(int fd, FILE* console) {
|
static int process_progress(int fd) {
|
||||||
_cleanup_fclose_ FILE *f = NULL;
|
_cleanup_fclose_ FILE *console = NULL, *f = NULL;
|
||||||
usec_t last = 0;
|
usec_t last = 0;
|
||||||
bool locked = false;
|
bool locked = false;
|
||||||
int clear = 0, r;
|
int clear = 0, r;
|
||||||
|
@ -172,6 +172,10 @@ static int process_progress(int fd, FILE* console) {
|
||||||
return log_debug_errno(errno, "Failed to use pipe: %m");
|
return log_debug_errno(errno, "Failed to use pipe: %m");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console = fopen("/dev/console", "we");
|
||||||
|
if (!console)
|
||||||
|
return log_debug_errno(errno, "Failed to open /dev/console, can't print progress output: %m");
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
int pass, m;
|
int pass, m;
|
||||||
unsigned long cur, max;
|
unsigned long cur, max;
|
||||||
|
@ -250,7 +254,6 @@ static int run(int argc, char *argv[]) {
|
||||||
_cleanup_close_pair_ int progress_pipe[2] = { -1, -1 };
|
_cleanup_close_pair_ int progress_pipe[2] = { -1, -1 };
|
||||||
_cleanup_(sd_device_unrefp) sd_device *dev = NULL;
|
_cleanup_(sd_device_unrefp) sd_device *dev = NULL;
|
||||||
_cleanup_free_ char *dpath = NULL;
|
_cleanup_free_ char *dpath = NULL;
|
||||||
_cleanup_fclose_ FILE *console = NULL;
|
|
||||||
const char *device, *type;
|
const char *device, *type;
|
||||||
bool root_directory;
|
bool root_directory;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
@ -339,9 +342,7 @@ static int run(int argc, char *argv[]) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
console = fopen("/dev/console", "we");
|
if (arg_show_progress &&
|
||||||
if (console &&
|
|
||||||
arg_show_progress &&
|
|
||||||
pipe(progress_pipe) < 0)
|
pipe(progress_pipe) < 0)
|
||||||
return log_error_errno(errno, "pipe(): %m");
|
return log_error_errno(errno, "pipe(): %m");
|
||||||
|
|
||||||
|
@ -400,10 +401,8 @@ static int run(int argc, char *argv[]) {
|
||||||
_exit(FSCK_OPERATIONAL_ERROR);
|
_exit(FSCK_OPERATIONAL_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (console) {
|
|
||||||
progress_pipe[1] = safe_close(progress_pipe[1]);
|
progress_pipe[1] = safe_close(progress_pipe[1]);
|
||||||
(void) process_progress(TAKE_FD(progress_pipe[0]), console);
|
(void) process_progress(TAKE_FD(progress_pipe[0]));
|
||||||
}
|
|
||||||
|
|
||||||
exit_status = wait_for_terminate_and_check("fsck", pid, WAIT_LOG_ABNORMAL);
|
exit_status = wait_for_terminate_and_check("fsck", pid, WAIT_LOG_ABNORMAL);
|
||||||
if (exit_status < 0)
|
if (exit_status < 0)
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
This appears to be failing on Ubuntu CI due to short sleep duration
|
|
||||||
waiting for the service-restarts to complete, but doubling the
|
|
||||||
sleep from 5 to 10 seconds didn't appear to help, so let's blacklist
|
|
||||||
this on Ubuntu CI while debugging the test failure.
|
|
|
@ -1,9 +0,0 @@
|
||||||
BUILD_DIR=$(shell ../../tools/find-build-dir.sh)
|
|
||||||
|
|
||||||
all setup run:
|
|
||||||
@basedir=../.. TEST_BASE_DIR=../ BUILD_DIR=$(BUILD_DIR) ./test.sh --$@
|
|
||||||
|
|
||||||
clean clean-again:
|
|
||||||
@basedir=../.. TEST_BASE_DIR=../ BUILD_DIR=$(BUILD_DIR) ./test.sh --clean
|
|
||||||
|
|
||||||
.PHONY: all setup run clean clean-again
|
|
|
@ -1,47 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
TEST_DESCRIPTION="test that ExecStopPost= is always run"
|
|
||||||
|
|
||||||
. $TEST_BASE_DIR/test-functions
|
|
||||||
|
|
||||||
test_setup() {
|
|
||||||
create_empty_image_rootdir
|
|
||||||
|
|
||||||
(
|
|
||||||
LOG_LEVEL=5
|
|
||||||
eval $(udevadm info --export --query=env --name=${LOOPDEV}p2)
|
|
||||||
|
|
||||||
setup_basic_environment
|
|
||||||
|
|
||||||
mask_supporting_services
|
|
||||||
|
|
||||||
# setup policy for Type=dbus test
|
|
||||||
mkdir -p $initdir/etc/dbus-1/system.d
|
|
||||||
cat > $initdir/etc/dbus-1/system.d/systemd.test.ExecStopPost.conf <<EOF
|
|
||||||
<?xml version="1.0"?>
|
|
||||||
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
|
|
||||||
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
|
|
||||||
<busconfig>
|
|
||||||
<policy user="root">
|
|
||||||
<allow own="systemd.test.ExecStopPost"/>
|
|
||||||
</policy>
|
|
||||||
</busconfig>
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# setup the testsuite service
|
|
||||||
cat >$initdir/etc/systemd/system/testsuite.service <<EOF
|
|
||||||
[Unit]
|
|
||||||
Description=Testsuite service
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
ExecStart=/testsuite.sh
|
|
||||||
Type=oneshot
|
|
||||||
EOF
|
|
||||||
cp testsuite.sh $initdir/
|
|
||||||
|
|
||||||
setup_testsuite
|
|
||||||
)
|
|
||||||
setup_nspawn_root
|
|
||||||
}
|
|
||||||
|
|
||||||
do_test "$@"
|
|
|
@ -1,89 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
systemd-analyze log-level debug
|
|
||||||
|
|
||||||
systemd-run --unit=simple1.service --wait -p StandardOutput=tty -p StandardError=tty -p Type=simple -p ExecStopPost='/bin/touch /run/simple1' true
|
|
||||||
test -f /run/simple1
|
|
||||||
|
|
||||||
! systemd-run --unit=simple2.service --wait -p StandardOutput=tty -p StandardError=tty -p Type=simple -p ExecStopPost='/bin/touch /run/simple2' false
|
|
||||||
test -f /run/simple2
|
|
||||||
|
|
||||||
systemd-run --unit=exec1.service --wait -p StandardOutput=tty -p StandardError=tty -p Type=exec -p ExecStopPost='/bin/touch /run/exec1' sleep 1
|
|
||||||
test -f /run/exec1
|
|
||||||
|
|
||||||
! systemd-run --unit=exec2.service --wait -p StandardOutput=tty -p StandardError=tty -p Type=exec -p ExecStopPost='/bin/touch /run/exec2' sh -c 'sleep 1; false'
|
|
||||||
test -f /run/exec2
|
|
||||||
|
|
||||||
cat > /tmp/forking1.sh <<EOF
|
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
sleep 4 &
|
|
||||||
MAINPID=\$!
|
|
||||||
disown
|
|
||||||
|
|
||||||
systemd-notify MAINPID=\$MAINPID
|
|
||||||
EOF
|
|
||||||
chmod +x /tmp/forking1.sh
|
|
||||||
|
|
||||||
systemd-run --unit=forking1.service --wait -p StandardOutput=tty -p StandardError=tty -p Type=forking -p NotifyAccess=exec -p ExecStopPost='/bin/touch /run/forking1' /tmp/forking1.sh
|
|
||||||
test -f /run/forking1
|
|
||||||
|
|
||||||
cat > /tmp/forking2.sh <<EOF
|
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
( sleep 4; exit 1 ) &
|
|
||||||
MAINPID=\$!
|
|
||||||
disown
|
|
||||||
|
|
||||||
systemd-notify MAINPID=\$MAINPID
|
|
||||||
EOF
|
|
||||||
chmod +x /tmp/forking2.sh
|
|
||||||
|
|
||||||
! systemd-run --unit=forking2.service --wait -p StandardOutput=tty -p StandardError=tty -p Type=forking -p NotifyAccess=exec -p ExecStopPost='/bin/touch /run/forking2' /tmp/forking2.sh
|
|
||||||
test -f /run/forking2
|
|
||||||
|
|
||||||
systemd-run --unit=oneshot1.service --wait -p StandardOutput=tty -p StandardError=tty -p Type=oneshot -p ExecStopPost='/bin/touch /run/oneshot1' true
|
|
||||||
test -f /run/oneshot1
|
|
||||||
|
|
||||||
! systemd-run --unit=oneshot2.service --wait -p StandardOutput=tty -p StandardError=tty -p Type=oneshot -p ExecStopPost='/bin/touch /run/oneshot2' false
|
|
||||||
test -f /run/oneshot2
|
|
||||||
|
|
||||||
systemd-run --unit=dbus1.service --wait -p StandardOutput=tty -p StandardError=tty -p Type=dbus -p BusName=systemd.test.ExecStopPost -p ExecStopPost='/bin/touch /run/dbus1' \
|
|
||||||
busctl call org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus RequestName su systemd.test.ExecStopPost 4 \
|
|
||||||
|| :
|
|
||||||
test -f /run/dbus1
|
|
||||||
|
|
||||||
! systemd-run --unit=dbus2.service --wait -p StandardOutput=tty -p StandardError=tty -p Type=dbus -p BusName=systemd.test.ExecStopPost -p ExecStopPost='/bin/touch /run/dbus2' true
|
|
||||||
test -f /run/dbus2
|
|
||||||
|
|
||||||
cat > /tmp/notify1.sh <<EOF
|
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
systemd-notify --ready
|
|
||||||
EOF
|
|
||||||
chmod +x /tmp/notify1.sh
|
|
||||||
|
|
||||||
systemd-run --unit=notify1.service --wait -p StandardOutput=tty -p StandardError=tty -p Type=notify -p ExecStopPost='/bin/touch /run/notify1' /tmp/notify1.sh
|
|
||||||
test -f /run/notify1
|
|
||||||
|
|
||||||
! systemd-run --unit=notify2.service --wait -p StandardOutput=tty -p StandardError=tty -p Type=notify -p ExecStopPost='/bin/touch /run/notify2' true
|
|
||||||
test -f /run/notify2
|
|
||||||
|
|
||||||
systemd-run --unit=idle1.service --wait -p StandardOutput=tty -p StandardError=tty -p Type=idle -p ExecStopPost='/bin/touch /run/idle1' true
|
|
||||||
test -f /run/idle1
|
|
||||||
|
|
||||||
! systemd-run --unit=idle2.service --wait -p StandardOutput=tty -p StandardError=tty -p Type=idle -p ExecStopPost='/bin/touch /run/idle2' false
|
|
||||||
test -f /run/idle2
|
|
||||||
|
|
||||||
systemd-analyze log-level info
|
|
||||||
|
|
||||||
echo OK > /testok
|
|
||||||
|
|
||||||
exit 0
|
|
Loading…
Reference in New Issue