diff options
Diffstat (limited to 'test/benchmark-gvfs-big-files.c')
-rw-r--r-- | test/benchmark-gvfs-big-files.c | 191 |
1 files changed, 0 insertions, 191 deletions
diff --git a/test/benchmark-gvfs-big-files.c b/test/benchmark-gvfs-big-files.c deleted file mode 100644 index af9c7b77..00000000 --- a/test/benchmark-gvfs-big-files.c +++ /dev/null @@ -1,191 +0,0 @@ -/* GIO - GLib Input, Output and Streaming Library - * - * Copyright (C) 2006-2007 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General - * Public License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Alexander Larsson <alexl@redhat.com> - */ - - -#include <config.h> - -#include <stdio.h> -#include <unistd.h> -#include <locale.h> -#include <errno.h> -#include <string.h> - -#include <glib.h> -#include <gio/gio.h> - -#define BENCHMARK_UNIT_NAME "gvfs-big-file" - -#include "benchmark-common.c" - -#define FILE_SIZE (1024 * 1024 * 50) /* 50 MiB */ -#define BUFFER_SIZE 4096 -#define ITERATIONS_NUM 1 - -static gboolean -is_dir (GFile *file) -{ - GFileInfo *info; - gboolean res; - - info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_TYPE, 0, NULL, NULL); - res = info && g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY; - if (info) - g_object_unref (info); - return res; -} - -static GFile * -create_file (GFile *base_dir) -{ - GFile *scratch_file; - gchar *scratch_name; - GOutputStream *output_stream; - gint pid; - GError *error = NULL; - gchar buffer [BUFFER_SIZE]; - gint i; - - pid = getpid (); - scratch_name = g_strdup_printf ("gvfs-benchmark-scratch-%d", pid); - scratch_file = g_file_resolve_relative_path (base_dir, scratch_name); - g_free (scratch_name); - - if (!scratch_file) - return NULL; - - output_stream = G_OUTPUT_STREAM (g_file_replace (scratch_file, 0, FALSE, G_FILE_CREATE_NONE, NULL, &error)); - if (!output_stream) - { - g_printerr ("Failed to create scratch file: %s\n", error->message); - g_object_unref (scratch_file); - return NULL; - } - - memset (buffer, 0xaa, BUFFER_SIZE); - - for (i = 0; i < FILE_SIZE; i += BUFFER_SIZE) - { - if (g_output_stream_write (output_stream, buffer, BUFFER_SIZE, NULL, &error) < BUFFER_SIZE) - { - g_printerr ("Failed to populate scratch file: %s\n", error->message); - g_output_stream_close (output_stream, NULL, NULL); - g_object_unref (output_stream); - g_object_unref (scratch_file); - return NULL; - } - } - - g_output_stream_close (output_stream, NULL, NULL); - g_object_unref (output_stream); - return scratch_file; -} - -static void -read_file (GFile *scratch_file) -{ - GInputStream *input_stream; - GError *error = NULL; - gint i; - - input_stream = (GInputStream *) g_file_read (scratch_file, NULL, &error); - if (!input_stream) - { - g_printerr ("Failed to open scratch file: %s\n", error->message); - return; - } - - for (i = 0; i < FILE_SIZE; i += BUFFER_SIZE) - { - gchar buffer [BUFFER_SIZE]; - gsize bytes_read; - - if (!g_input_stream_read_all (input_stream, buffer, BUFFER_SIZE, &bytes_read, NULL, &error) || - bytes_read < BUFFER_SIZE) - { - g_printerr ("Failed to read back scratch file: %s\n", error->message); - g_input_stream_close (input_stream, NULL, NULL); - g_object_unref (input_stream); - } - } - - g_object_unref (input_stream); -} - -static void -delete_file (GFile *scratch_file) -{ -#if 0 - GError *error = NULL; - - /* Enable when GDaemonFile supports delete */ - - if (!g_file_delete (scratch_file, NULL, &error)) - { - g_printerr ("Failed to delete scratch file: %s\n", error->message); - } -#endif -} - -static gint -benchmark_run (gint argc, gchar *argv []) -{ - GFile *base_dir; - GFile *scratch_file; - gint i; - - setlocale (LC_ALL, ""); - - g_type_init (); - - if (argc < 2) - { - g_printerr ("Usage: %s <scratch URI>\n", argv [0]); - return 1; - } - - base_dir = g_file_new_for_commandline_arg (argv [1]); - - if (!is_dir (base_dir)) - { - g_printerr ("Scratch URI %s is not a directory\n", argv [1]); - g_object_unref (base_dir); - return 1; - } - - for (i = 0; i < ITERATIONS_NUM; i++) - { - scratch_file = create_file (base_dir); - if (!scratch_file) - { - g_object_unref (base_dir); - return 1; - } - - read_file (scratch_file); - delete_file (scratch_file); - - g_object_unref (scratch_file); - } - - g_object_unref (base_dir); - return 0; -} |