~upstart-devel/upstart/trunk

« back to all changes in this revision

Viewing changes to init/tests/test_job.c

  • Committer: James Hunt
  • Date: 2014-09-03 16:28:24 UTC
  • mfrom: (1660.1.1 upstart-bug-1357252)
  • Revision ID: james.hunt@ubuntu.com-20140903162824-4f039oykmggh18kh
* Merge of lp:~jamesodhunt/upstart/bug-1357252.

Show diffs side-by-side

added added

removed removed

Lines of Context:
7790
7790
        NIH_OPTION_LAST
7791
7791
};
7792
7792
 
 
7793
void
 
7794
test_job_last_process (void)
 
7795
{
 
7796
        ConfFile    *file;
 
7797
        ConfSource  *source;
 
7798
        JobClass    *class;
 
7799
        Job         *job;
 
7800
        int          i;
 
7801
        int          ret;
 
7802
 
 
7803
        TEST_FUNCTION ("job_last_process");
 
7804
 
 
7805
        nih_error_init ();
 
7806
        conf_init ();
 
7807
        job_class_init ();
 
7808
 
 
7809
        TEST_HASH_EMPTY (job_classes);
 
7810
 
 
7811
        source = conf_source_new (NULL, "/tmp", CONF_JOB_DIR);
 
7812
        TEST_NE_P (source, NULL);
 
7813
 
 
7814
        file = conf_file_new (source, "/tmp/test");
 
7815
        TEST_NE_P (file, NULL);
 
7816
 
 
7817
        class = file->job = job_class_new (NULL, "test", NULL);
 
7818
        TEST_NE_P (class, NULL);
 
7819
 
 
7820
        job = job_new (class, "");
 
7821
        TEST_NE_P (job, NULL);
 
7822
 
 
7823
        TEST_HASH_EMPTY (job_classes);
 
7824
        TEST_TRUE (job_class_consider (class));
 
7825
        TEST_HASH_NOT_EMPTY (job_classes);
 
7826
 
 
7827
        /*******************************************************************/
 
7828
        TEST_FEATURE ("no job processes");
 
7829
 
 
7830
        for (i = 0; i < PROCESS_LAST; i++) {
 
7831
                ret = job_last_process (job, i);
 
7832
                TEST_FALSE (ret);
 
7833
        }
 
7834
 
 
7835
        /*******************************************************************/
 
7836
        TEST_FEATURE ("first job process");
 
7837
 
 
7838
        class->process[PROCESS_MAIN] = process_new (class);
 
7839
        TEST_NE_P (class->process[PROCESS_MAIN], NULL);
 
7840
 
 
7841
        for (i = 0; i < PROCESS_LAST; i++) {
 
7842
                ret = job_last_process (job, i);
 
7843
                if (i == PROCESS_MAIN) {
 
7844
                        TEST_TRUE (ret);
 
7845
                } else {
 
7846
                        TEST_FALSE (ret);
 
7847
                }
 
7848
        }
 
7849
 
 
7850
        nih_free (class->process[PROCESS_MAIN]);
 
7851
        class->process[PROCESS_MAIN] = NULL;
 
7852
 
 
7853
        /*******************************************************************/
 
7854
        TEST_FEATURE ("last job process");
 
7855
 
 
7856
        class->process[PROCESS_SECURITY] = process_new (class);
 
7857
        TEST_NE_P (class->process[PROCESS_SECURITY], NULL);
 
7858
 
 
7859
        for (i = 0; i < PROCESS_LAST; i++) {
 
7860
                ret = job_last_process (job, i);
 
7861
                if (i == PROCESS_SECURITY) {
 
7862
                        TEST_TRUE (ret);
 
7863
                } else {
 
7864
                        TEST_FALSE (ret);
 
7865
                }
 
7866
        }
 
7867
 
 
7868
        nih_free (class->process[PROCESS_SECURITY]);
 
7869
        class->process[PROCESS_SECURITY] = NULL;
 
7870
 
 
7871
        /*******************************************************************/
 
7872
        TEST_FEATURE ("PROCESS_PRE_STOP job process");
 
7873
 
 
7874
        class->process[PROCESS_PRE_STOP] = process_new (class);
 
7875
        TEST_NE_P (class->process[PROCESS_PRE_STOP], NULL);
 
7876
 
 
7877
        for (i = 0; i < PROCESS_LAST; i++) {
 
7878
                ret = job_last_process (job, i);
 
7879
                if (i == PROCESS_PRE_STOP) {
 
7880
                        TEST_TRUE (ret);
 
7881
                } else {
 
7882
                        TEST_FALSE (ret);
 
7883
                }
 
7884
        }
 
7885
 
 
7886
        nih_free (class->process[PROCESS_PRE_STOP]);
 
7887
        class->process[PROCESS_PRE_STOP] = NULL;
 
7888
 
 
7889
        /*******************************************************************/
 
7890
        TEST_FEATURE ("all job processes set");
 
7891
 
 
7892
        for (i = 0; i < PROCESS_LAST; i++) {
 
7893
                class->process[i] = process_new (class);
 
7894
                TEST_NE_P (class->process[i], NULL);
 
7895
        }
 
7896
 
 
7897
        for (i = 0; i < PROCESS_LAST; i++) {
 
7898
                ret = job_last_process (job, i);
 
7899
                if (i == PROCESS_SECURITY) {
 
7900
                        TEST_TRUE (ret);
 
7901
                } else {
 
7902
                        TEST_FALSE (ret);
 
7903
                }
 
7904
        }
 
7905
 
 
7906
        for (i = 0; i < PROCESS_LAST; i++) {
 
7907
                nih_free (class->process[i]);
 
7908
                class->process[i] = NULL;
 
7909
        }
 
7910
 
 
7911
        /*******************************************************************/
 
7912
        TEST_FEATURE ("all job processes set except PROCESS_SECURITY");
 
7913
 
 
7914
        for (i = 0; i < PROCESS_SECURITY; i++) {
 
7915
                class->process[i] = process_new (class);
 
7916
                TEST_NE_P (class->process[i], NULL);
 
7917
        }
 
7918
 
 
7919
        for (i = 0; i < PROCESS_LAST; i++) {
 
7920
                ret = job_last_process (job, i);
 
7921
                if (i == PROCESS_POST_STOP) {
 
7922
                        TEST_TRUE (ret);
 
7923
                } else {
 
7924
                        TEST_FALSE (ret);
 
7925
                }
 
7926
        }
 
7927
 
 
7928
        for (i = 0; i < PROCESS_SECURITY; i++) {
 
7929
                nih_free (class->process[i]);
 
7930
                class->process[i] = NULL;
 
7931
        }
 
7932
 
 
7933
        /***********************************************************/
 
7934
        /* clean up */
 
7935
 
 
7936
        nih_free (conf_sources);
 
7937
        nih_free (job_classes);
 
7938
 
 
7939
        conf_sources = NULL;
 
7940
        job_classes = NULL;
 
7941
 
 
7942
        conf_init ();
 
7943
        job_class_init ();
 
7944
}
 
7945
 
7793
7946
 
7794
7947
int
7795
7948
main (int   argc,
7841
7994
        test_deserialise_ptrace ();
7842
7995
 
7843
7996
        test_job_find ();
 
7997
        test_job_last_process ();
7844
7998
 
7845
7999
        return 0;
7846
8000
}