• Publicity: Public Only All

apm-parameter-test-procs.tcl

Testing for parameter registration

Location:
packages/acs-tcl/tcl/test/apm-parameter-test-procs.tcl
Created:
2006-08-10
Author:
Adrian Catalan <ykro@galileo.edu>

Procedures in this file

Detailed information

[ hide source ] | [ make this the default ]

Content File Source

ad_library {
    Testing for parameter registration
    @author Adrian Catalan (ykro@galileo.edu)
    @creation-date 2006-08-10
}

aa_register_case \
    -cats {api smoke} \
    -procs {
        apm_package_id_from_key
        apm_parameter_register
        apm_parameter_unregister
        parameter::get
        parameter::get_global_value

        db_1row
    } \
    parameter_register_test {
    Test the registration of a parameter
} {
    set parameter_id [db_nextval "acs_object_id_seq"]
    set parameter_name [ad_generate_random_string]
    set description "Description for the new parameter"
    set package_key "acs-tcl"
    set default_value "5"
    set datatype "number"
    set scope "instance"
    aa_log "Registering an instance parameter"
    apm_parameter_register -parameter_id $parameter_id -scope $scope $parameter_name $description $package_key $default_value $datatype

    set package_id [apm_package_id_from_key $package_key]
    aa_true "check apm_parameter_register instance parameter" [string equal [parameter::get -package_id $package_id -parameter $parameter_name$default_value]
    aa_log "Unregistering an instance parameter"
    apm_parameter_unregister -parameter_id $parameter_id

    set scope "global"
    aa_log "Registering a global parameter"
    apm_parameter_register -parameter_id $parameter_id -scope $scope $parameter_name $description $package_key $default_value $datatype
    aa_true "check apm_parameter_register global parameter" [string equal [parameter::get_global_value -package_key $package_key -parameter $parameter_name$default_value]
    aa_log "Unregistering a global parameter"
    apm_parameter_unregister -parameter_id $parameter_id
}

aa_register_case \
    -cats {api smoke} \
    -procs {
        ad_parameter_cache
        apm_package_id_from_key
        apm_parameter_register
        apm_parameter_unregister
        parameter::get
        parameter::get_from_package_key
        parameter::get_global_value
        parameter::set_default
        parameter::set_from_package_key
        parameter::set_global_value
        parameter::set_value
        db_list_of_lists
        util::random

        db_1row
        "::xowiki::Package proc is_xowiki_p"
    } \
    parameter__check_procs {
    Test the parameter::* procs

    @author Rocael Hernandez (roc@viaro.net)
} {

    aa_run_with_teardown -rollback -test_code {

            aa_log "Test global parameter functionality"
            set parameter_id [db_nextval "acs_object_id_seq"]
            apm_parameter_register -parameter_id $parameter_id -scope global x_test_x "" acs-tcl 0 number
            parameter::set_global_value -package_key acs-tcl -parameter x_test_x -value 3
            aa_equals "check global parameter value set/get" \
                [parameter::get_global_value -package_key acs-tcl -parameter x_test_x] \
                3
            apm_parameter_unregister -parameter_id $parameter_id

            db_foreach get_params {
                select ap.parameter_name, ap.package_key, ap.default_value, ap.parameter_id
                from apm_parameters ap, apm_package_types apt
                where
                ap.package_key = apt.package_key
                and ap.scope = 'instance'
                and apt.singleton_p = 't'
            } {
                aa_section "$package_key - $parameter_name"

                #
                # parameter::* API currently does not support changing
                # the value of parameters that are defined in the
                # server configuration file.
                #
                set file_value [ad_parameter_from_configuration_file $parameter_name $package_key]
                if {$file_value ne ""} {
                    continue
                }

                #
                # Instance parameters have a value only when a package
                # is mounted. This is not always true for a singleton
                # package.
                #
                set package_id [apm_package_id_from_key $package_key]
                if {$package_id == 0} {
                    continue
                }

                set value [util::random]

                set actual_value [db_string real_value {
                    select apm_parameter_values.attr_value
                    from   apm_parameter_values
                    where apm_parameter_values.package_id = :package_id
                    and apm_parameter_values.parameter_id = :parameter_id
                }]

                aa_log "$package_key $parameter_name $actual_value"
                aa_equals "check parameter::get" \
                    [parameter::get -package_id $package_id -parameter $parameter_name] \
                    $actual_value
                aa_equals "check parameter::get_from_package_key" \
                    [parameter::get_from_package_key -package_key $package_key -parameter $parameter_name] \
                    $actual_value

                parameter::set_default -package_key $package_key -parameter $parameter_name -value $value
                set value_db [db_string get_values {
                    select default_value from apm_parameters
                    where package_key = :package_key and parameter_name = :parameter_name
                }]
                aa_equals "check parameter::set_default" $value $value_db
                set value [expr {$value + 10}]

                parameter::set_from_package_key -package_key $package_key -parameter $parameter_name -value $value
                aa_equals "check parameter::set_from_package_key" \
                    [parameter::get -package_id $package_id -parameter $parameter_name] \
                    $value

                set value [expr {$value + 10}]
                parameter::set_value -package_id $package_id -parameter $parameter_name -value $value
                aa_equals "check parameter::set_value" \
                    [parameter::get -package_id $package_id -parameter $parameter_name] \
                    $value

                parameter::set_from_package_key \
                    -package_key $package_key \
                    -parameter $parameter_name \
                    -value $actual_value

                parameter::set_value \
                    -package_id $package_id \
                    -parameter $parameter_name \
                    -value $actual_value

                parameter::set_default \
                    -package_key $package_key \
                    -parameter $parameter_name \
                    -value $default_value
            }
        }
}

# Local variables:
#    mode: tcl
#    tcl-indent-level: 4
#    indent-tabs-mode: nil
# End: