feat: Implement production-ready systemd service best practices
- Update systemd service file with Type=simple and comprehensive locking - Enhance D-Bus service and policy files for proper activation - Remove OSTree dependency for test mode compatibility - Implement automated service file installation and cleanup - Add comprehensive systemd usage documentation - Update changelog and TODO to reflect completed systemd improvements - Service now successfully running under systemd management This completes the systemd service integration with production-ready configuration and best practices for daemon lifecycle management.
This commit is contained in:
parent
3def8187a9
commit
8c470a56b5
13 changed files with 1684 additions and 93 deletions
168
test_dbus_methods.sh
Executable file
168
test_dbus_methods.sh
Executable file
|
|
@ -0,0 +1,168 @@
|
|||
#!/bin/bash
|
||||
|
||||
# D-Bus Method Testing Script for apt-ostree
|
||||
# Tests all available D-Bus methods
|
||||
|
||||
set -e
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Configuration
|
||||
SERVICE_NAME="org.debian.aptostree1"
|
||||
SYSROOT_PATH="/org/debian/aptostree1/Sysroot"
|
||||
OS_PATH="/org/debian/aptostree1/OS/default"
|
||||
|
||||
echo -e "${BLUE}=== apt-ostree D-Bus Method Testing ===${NC}"
|
||||
echo
|
||||
|
||||
# Function to test a D-Bus method
|
||||
test_method() {
|
||||
local method_name="$1"
|
||||
local interface="$2"
|
||||
local path="$3"
|
||||
local args="$4"
|
||||
local description="$5"
|
||||
|
||||
echo -e "${YELLOW}Testing: $description${NC}"
|
||||
echo "Method: $method_name"
|
||||
echo "Interface: $interface"
|
||||
echo "Path: $path"
|
||||
echo "Args: $args"
|
||||
echo
|
||||
|
||||
if busctl call "$SERVICE_NAME" "$path" "$interface" "$method_name" $args 2>/dev/null; then
|
||||
echo -e "${GREEN}✓ SUCCESS${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ FAILED${NC}"
|
||||
fi
|
||||
echo
|
||||
}
|
||||
|
||||
# Function to test a D-Bus property
|
||||
test_property() {
|
||||
local property_name="$1"
|
||||
local interface="$2"
|
||||
local path="$3"
|
||||
local description="$4"
|
||||
|
||||
echo -e "${YELLOW}Testing Property: $description${NC}"
|
||||
echo "Property: $property_name"
|
||||
echo "Interface: $interface"
|
||||
echo "Path: $path"
|
||||
echo
|
||||
|
||||
if busctl get-property "$SERVICE_NAME" "$path" "$interface" "$property_name" 2>/dev/null; then
|
||||
echo -e "${GREEN}✓ SUCCESS${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ FAILED${NC}"
|
||||
fi
|
||||
echo
|
||||
}
|
||||
|
||||
# Check if daemon is running
|
||||
echo -e "${BLUE}Checking daemon status...${NC}"
|
||||
if ! busctl list | grep -q "$SERVICE_NAME"; then
|
||||
echo -e "${RED}Error: Daemon not found on D-Bus${NC}"
|
||||
echo "Make sure the daemon is running with:"
|
||||
echo "sudo python3 src/apt-ostree.py/python/apt_ostree.py --daemon"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}✓ Daemon found on D-Bus${NC}"
|
||||
echo
|
||||
|
||||
# Test 1: GetStatus method
|
||||
test_method "GetStatus" "org.debian.aptostree1.Sysroot" "$SYSROOT_PATH" "" "Get daemon status"
|
||||
|
||||
# Test 2: GetOS method
|
||||
test_method "GetOS" "org.debian.aptostree1.Sysroot" "$SYSROOT_PATH" "" "Get OS instances"
|
||||
|
||||
# Test 3: Reload method
|
||||
test_method "Reload" "org.debian.aptostree1.Sysroot" "$SYSROOT_PATH" "" "Reload sysroot state"
|
||||
|
||||
# Test 4: ReloadConfig method
|
||||
test_method "ReloadConfig" "org.debian.aptostree1.Sysroot" "$SYSROOT_PATH" "" "Reload configuration"
|
||||
|
||||
# Test 5: RegisterClient method
|
||||
test_method "RegisterClient" "org.debian.aptostree1.Sysroot" "$SYSROOT_PATH" "dict:string:test,string:test-client" "Register client"
|
||||
|
||||
# Test 6: InstallPackages method (with curl as test package)
|
||||
test_method "InstallPackages" "org.debian.aptostree1.Sysroot" "$SYSROOT_PATH" "array:string:curl boolean:false" "Install packages (curl)"
|
||||
|
||||
# Test 7: RemovePackages method (with curl as test package)
|
||||
test_method "RemovePackages" "org.debian.aptostree1.Sysroot" "$SYSROOT_PATH" "array:string:curl boolean:false" "Remove packages (curl)"
|
||||
|
||||
# Test 8: Deploy method
|
||||
test_method "Deploy" "org.debian.aptostree1.Sysroot" "$SYSROOT_PATH" "string:test-layer dict:string:test,string:value" "Deploy layer"
|
||||
|
||||
# Test 9: Upgrade method
|
||||
test_method "Upgrade" "org.debian.aptostree1.Sysroot" "$SYSROOT_PATH" "dict:string:test,string:value" "System upgrade"
|
||||
|
||||
# Test 10: Rollback method
|
||||
test_method "Rollback" "org.debian.aptostree1.Sysroot" "$SYSROOT_PATH" "dict:string:test,string:value" "System rollback"
|
||||
|
||||
# Test 11: CreateComposeFSLayer method
|
||||
test_method "CreateComposeFSLayer" "org.debian.aptostree1.Sysroot" "$SYSROOT_PATH" "string:/tmp/test-source string:/tmp/test-layer string:/tmp/test-digest" "Create ComposeFS layer"
|
||||
|
||||
# Test 12: UnregisterClient method
|
||||
test_method "UnregisterClient" "org.debian.aptostree1.Sysroot" "$SYSROOT_PATH" "dict:string:test,string:test-client" "Unregister client"
|
||||
|
||||
# Test Properties
|
||||
echo -e "${BLUE}=== Testing D-Bus Properties ===${NC}"
|
||||
echo
|
||||
|
||||
# Test Sysroot properties
|
||||
test_property "Booted" "org.debian.aptostree1.Sysroot" "$SYSROOT_PATH" "Booted property"
|
||||
test_property "Path" "org.debian.aptostree1.Sysroot" "$SYSROOT_PATH" "Path property"
|
||||
test_property "ActiveTransaction" "org.debian.aptostree1.Sysroot" "$SYSROOT_PATH" "ActiveTransaction property"
|
||||
test_property "ActiveTransactionPath" "org.debian.aptostree1.Sysroot" "$SYSROOT_PATH" "ActiveTransactionPath property"
|
||||
test_property "Deployments" "org.debian.aptostree1.Sysroot" "$SYSROOT_PATH" "Deployments property"
|
||||
test_property "AutomaticUpdatePolicy" "org.debian.aptostree1.Sysroot" "$SYSROOT_PATH" "AutomaticUpdatePolicy property"
|
||||
|
||||
# Test OS properties (if OS interface exists)
|
||||
test_property "BootedDeployment" "org.debian.aptostree1.OS" "$OS_PATH" "BootedDeployment property"
|
||||
test_property "DefaultDeployment" "org.debian.aptostree1.OS" "$OS_PATH" "DefaultDeployment property"
|
||||
test_property "RollbackDeployment" "org.debian.aptostree1.OS" "$OS_PATH" "RollbackDeployment property"
|
||||
test_property "CachedUpdate" "org.debian.aptostree1.OS" "$OS_PATH" "CachedUpdate property"
|
||||
test_property "HasCachedUpdateRpmDiff" "org.debian.aptostree1.OS" "$OS_PATH" "HasCachedUpdateRpmDiff property"
|
||||
test_property "Name" "org.debian.aptostree1.OS" "$OS_PATH" "Name property"
|
||||
|
||||
# Test OS methods (if OS interface exists)
|
||||
echo -e "${BLUE}=== Testing OS Interface Methods ===${NC}"
|
||||
echo
|
||||
|
||||
test_method "GetDeployments" "org.debian.aptostree1.OS" "$OS_PATH" "" "Get deployments"
|
||||
test_method "GetBootedDeployment" "org.debian.aptostree1.OS" "$OS_PATH" "" "Get booted deployment"
|
||||
test_method "Deploy" "org.debian.aptostree1.OS" "$OS_PATH" "string:test-revision dict:string:test,string:value" "Deploy revision"
|
||||
test_method "Upgrade" "org.debian.aptostree1.OS" "$OS_PATH" "dict:string:test,string:value" "OS upgrade"
|
||||
test_method "Rollback" "org.debian.aptostree1.OS" "$OS_PATH" "dict:string:test,string:value" "OS rollback"
|
||||
test_method "PkgChange" "org.debian.aptostree1.OS" "$OS_PATH" "dict:string:test,string:value" "Package change"
|
||||
test_method "Rebase" "org.debian.aptostree1.OS" "$OS_PATH" "string:test-refspec dict:string:test,string:value" "Rebase"
|
||||
|
||||
# Test D-Bus introspection
|
||||
echo -e "${BLUE}=== Testing D-Bus Introspection ===${NC}"
|
||||
echo
|
||||
|
||||
echo -e "${YELLOW}Introspecting Sysroot interface...${NC}"
|
||||
if busctl introspect "$SERVICE_NAME" "$SYSROOT_PATH" 2>/dev/null | head -20; then
|
||||
echo -e "${GREEN}✓ Introspection successful${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ Introspection failed${NC}"
|
||||
fi
|
||||
echo
|
||||
|
||||
echo -e "${YELLOW}Introspecting OS interface...${NC}"
|
||||
if busctl introspect "$SERVICE_NAME" "$OS_PATH" 2>/dev/null | head -20; then
|
||||
echo -e "${GREEN}✓ Introspection successful${NC}"
|
||||
else
|
||||
echo -e "${RED}✗ Introspection failed${NC}"
|
||||
fi
|
||||
echo
|
||||
|
||||
echo -e "${BLUE}=== Testing Complete ===${NC}"
|
||||
echo -e "${GREEN}All D-Bus method tests completed!${NC}"
|
||||
Loading…
Add table
Add a link
Reference in a new issue