branches/gmyth-0.1b/tests/gmyth_test_recorder.c
author rosfran
Fri Feb 02 22:04:00 2007 +0000 (2007-02-02)
branchtrunk
changeset 322 eb6b0b1409b5
permissions -rw-r--r--
[svn r324] Added function to request how many recorders are available.
renatofilho@320
     1
#include <glib-object.h>
renatofilho@320
     2
renatofilho@320
     3
#include "gmyth_backendinfo.h"
renatofilho@320
     4
#include "gmyth_remote_util.h"
renatofilho@320
     5
#include "gmyth_query.h"
renatofilho@320
     6
#include "gmyth_epg.h"
renatofilho@320
     7
#include "gmyth_common.h"
renatofilho@320
     8
renatofilho@320
     9
renatofilho@320
    10
static gboolean
renatofilho@320
    11
test_recorder_availability (GMythBackendInfo *backend_info)
renatofilho@320
    12
{
renatofilho@320
    13
    GMythRecorder* recorder;
renatofilho@320
    14
    GMythSocket *socket = gmyth_socket_new ();
renatofilho@320
    15
renatofilho@320
    16
    if (gmyth_socket_connect_to_backend (socket, 
renatofilho@320
    17
	    gmyth_backend_info_get_hostname (backend_info),
renatofilho@320
    18
	    gmyth_backend_info_get_port (backend_info), TRUE) == FALSE) {
renatofilho@320
    19
	g_debug ("Test recorder failed: Connection failed");
renatofilho@320
    20
	return FALSE;
renatofilho@320
    21
    }
renatofilho@320
    22
renatofilho@320
    23
    recorder = remote_request_next_free_recorder (socket, -1);
renatofilho@320
    24
    gmyth_socket_close_connection (socket);
renatofilho@320
    25
    if (recorder == NULL) {
renatofilho@320
    26
	g_debug ("Recorder not available\n");
renatofilho@320
    27
	return FALSE;
renatofilho@320
    28
    }
renatofilho@320
    29
    
renatofilho@320
    30
    g_debug ("Recorder found (num): %d", recorder->recorder_num);
renatofilho@320
    31
    
renatofilho@320
    32
    return TRUE;
renatofilho@320
    33
}
renatofilho@320
    34
renatofilho@320
    35
static gboolean
renatofilho@320
    36
test_recorder_setup (GMythBackendInfo *backend_info)
renatofilho@320
    37
{
renatofilho@320
    38
    GMythQuery *query = gmyth_query_new ();
renatofilho@320
    39
renatofilho@320
    40
    if (gmyth_query_connect_with_timeout (query, backend_info, 3) == TRUE) {
renatofilho@320
    41
	g_debug ("Mysql connection success");
renatofilho@320
    42
	return TRUE;
renatofilho@320
    43
    } else {
renatofilho@320
    44
	g_debug ("Mysql connection failed");
renatofilho@320
    45
	return FALSE;
renatofilho@320
    46
    }
renatofilho@320
    47
       
renatofilho@320
    48
}
renatofilho@320
    49
renatofilho@320
    50
static gboolean
renatofilho@320
    51
test_recorder_check_channels (GMythBackendInfo *backend_info)
renatofilho@320
    52
{
renatofilho@320
    53
    GMythRecorder* recorder;
renatofilho@320
    54
    GMythSocket *socket = gmyth_socket_new ();
renatofilho@320
    55
    GMythEPG *epg = gmyth_epg_new ();
renatofilho@320
    56
    GList *clist;
renatofilho@320
    57
    gint i, length;
renatofilho@320
    58
renatofilho@320
    59
    // Gets the free recorder
renatofilho@320
    60
    if (gmyth_socket_connect_to_backend (socket, 
renatofilho@320
    61
	    gmyth_backend_info_get_hostname (backend_info),
renatofilho@320
    62
	    gmyth_backend_info_get_port (backend_info), TRUE) == FALSE) {
renatofilho@320
    63
	g_debug ("Test recorder failed: Connection failed");
renatofilho@320
    64
	return FALSE;
renatofilho@320
    65
    }
renatofilho@320
    66
renatofilho@320
    67
    recorder = remote_request_next_free_recorder (socket, -1);
renatofilho@320
    68
    gmyth_socket_close_connection (socket);
renatofilho@320
    69
    if (recorder == NULL) {
renatofilho@320
    70
	g_debug ("[%s] Recorder not available", __FUNCTION__);
renatofilho@320
    71
	return FALSE;
renatofilho@320
    72
    }
renatofilho@320
    73
renatofilho@320
    74
    // Connects the recorder socket
renatofilho@320
    75
    gmyth_recorder_setup (recorder);
renatofilho@320
    76
renatofilho@320
    77
    // Gets the list of channels
renatofilho@320
    78
    if (!gmyth_epg_connect (epg, backend_info)) {
renatofilho@320
    79
        g_debug ("%s: Not connected\n", __FUNCTION__);
renatofilho@320
    80
        return FALSE;
renatofilho@320
    81
    }
renatofilho@320
    82
renatofilho@320
    83
    length = gmyth_epg_get_channel_list (epg, &clist);
renatofilho@320
    84
    gmyth_epg_disconnect (epg);
renatofilho@320
    85
    g_object_unref (epg);
renatofilho@320
    86
renatofilho@320
    87
    g_print ("==== Verifying the %d channels found in the EPG ====\n", length);
renatofilho@320
    88
    for (i=0; i<length; i++) {
renatofilho@320
    89
        GMythChannelInfo *channel_info = (GMythChannelInfo*) g_list_nth_data (clist, i);
renatofilho@320
    90
	gboolean res;
renatofilho@320
    91
renatofilho@320
    92
	// Checks the channels
renatofilho@320
    93
        res = gmyth_recorder_check_channel (recorder, channel_info->channel_ID);
renatofilho@320
    94
	g_debug ("Channel %d %s", channel_info->channel_ID, res ? "Found" : "Not found");
renatofilho@320
    95
    }
renatofilho@320
    96
renatofilho@320
    97
    g_list_free (clist);
renatofilho@320
    98
renatofilho@320
    99
}
renatofilho@320
   100
renatofilho@320
   101
renatofilho@320
   102
int
renatofilho@320
   103
main (int args, const char **argv)
renatofilho@320
   104
{
renatofilho@320
   105
    const char* uri = argv[1];
renatofilho@320
   106
renatofilho@320
   107
    GMythBackendInfo *backend_info;
renatofilho@320
   108
    g_type_init ();
renatofilho@320
   109
    g_thread_init (NULL);
renatofilho@320
   110
renatofilho@320
   111
    backend_info = gmyth_backend_info_new_with_uri (argv[1]);
renatofilho@320
   112
renatofilho@320
   113
    printf ("******** Testing recorder availability ***********\n");
renatofilho@320
   114
    test_recorder_availability (backend_info);
renatofilho@320
   115
renatofilho@320
   116
    printf ("******** Testing recorder check channels function ***********\n");
renatofilho@320
   117
    test_recorder_check_channels (backend_info);
renatofilho@320
   118
}
renatofilho@320
   119
renatofilho@320
   120
renatofilho@320
   121
renatofilho@320
   122
renatofilho@320
   123